Aufgabenstellung

Wir sind Mitarbeiter eines fiktiven großen Automobilkonzerns, der unter zwei Automobilmarken, “OEM1” und “OEM2”, mehrere Fahrzeugtypen herstellt. Die Zulieferkette setzt sich aus zwei Instanzen zusammen: den Teilelieferanten und den Komponentenlieferanten. Das Produktionswerk verbaut die Komponenten in die jeweiligen Fahrzeuge. Momentan versuchen die Automobilhersteller, trotz negativer Berichterstattung über Dieselfahrzeuge, Kunden für Autos mit Dieselmotoren zu gewinnen. Ein oft verwendetes Argument ist die Langlebigkeit von Dieselmotoren, die deutlich größer als die Lebensdauer der Benzinmotoren sein soll. Das Management beauftragt Sie, diese Behauptung zu überprüfen um mit der Aussage künftig werben zu können. Überprüfen Sie die Aussage über die Langlebigkeit von Dieselmotoren durch einen Vergleich mit Benzinmotoren. Überprüfen Sie die Aussage über die Langlebigkeit von Dieselmotoren durch einen Vergleich mit Benzinmotoren. Ermitteln Sie den Zeitraum zwischen Zulassungsdatum und Fehlerdatum aller Fahrzeuge, getrennt nach Motorisierungsart und Fahrzeugart. Visualisieren Sie Ihre Ergebnisse entsprechend Ihrer Zielgruppe. Ermöglichen Sie einen Vergleich zwischen den Fahrzeugtypen.

Visualisierung

A: Ein Balkendiagramm, das die relativen Fehlerhäufigkeiten aller Motoren, getrennt in Benzin- und Dieselantrieb, darstellt. Das Diagramm muss interaktive Elemente enthalten. Der Produktionszeitraum der Fahrzeuge muss durch den Nutzer variabel eingrenzbar sein.

B: Pro Fahrzeugtyp jeweils einen Boxplot für Varianten mit Dieselmotor und einen Boxplot für Varianten mit Benzinmotor. Die Boxplots beziehen sich dabei auf das Zeitintervall zwischen Zulassung eines Fahrzeugs und Fehlerdatum der Fahrzeuge. Wichtige Kennzahlen müssen interaktiv ablesbar sein. Die Fahrzeugtypen sollen an- und abwählbar sein. Alle Fahrzeugtypen von OEM1 und OEM2 sollen mit einem Klick an- und abwählbar sein. Der für das Balkendiagramm ausgewählte Produktionszeitraum soll auch hier angewendet werden.

1 Importieren der Daten

1.1 Laden und geg. Installieren notwendiger Bibliotheken

if(!require(plotly)){
  install.packages("plotly")
}
library(plotly)

if(!require(shinyWidgets)){
  install.packages("shinyWidgets")
}
library(shinyWidgets)

if(!require(shinythemes)){
  install.packages("shinythemes")
}
library(shinythemes)

if(!require(DT)){
  install.packages("DT")
}
library(DT)

if(!require(data.table)){
  install.packages("data.table")
  # für die Verwendung von fread()
  library(data.table)
}


if(!require(tidyverse)){
  install.packages("tidyverse")
  library(tidyverse)
}


if(!require(shiny)){
  install.packages("shiny")
  library(shiny)
}


if(!require(plyr)){
  install.packages("plyr")
  require(plyr)
}


if(!require(lubridate)){
  install.packages("lubridate")
  require(lubridate)
}



if(!require(eply)) {
  install.packages("eply")
  require(eply)
}

Aus die Aufgabenstellung gibt es solche Annahme: \[ Lebensdauer= Fehlerdatum - Zulassungsdatum \]

1.2 Relevante Daten

Zuerst wurde/wird es analysiert, welche daten relevant sind. Dieses Verfahren hängt von den folgenden drei Aufgaben und weiteren detallierten Anforderungen des Inhalts und der Eigenschaften der Shiny-Applikation. Darüber hinaus hängen die relevanten Daten mit den Dateien zusammen, die nicht nur die unterschiedlichen Motorentypen als ganze Systeme sondern auch die Einzelteile dieser Motoren beschreiben.

  1. Überprüfen Sie die Aussage über die Langlebigkeit von Dieselmotoren durch einen Vergleich mit Benzinmotoren.
  2. Ermitteln Sie den Zeitraum zwischen Zulassungsdatum und Fehlerdatum aller Fahrzeuge, getrennt nach Motorisierungsart und Fahrzeugart.
  3. Visualisieren Sie Ihre Ergebnisse entsprechend Ihrer Zielgruppe. Ermöglichen Sie einen Vergleich zwischen den Fahrzeugtypen.

Die für die Analyse nötwendigen Parameter sind wie folgend aufgelistet :

  • Fehlerdatum der Fahrzeuge, die wegen eines fehlerhaften Motors, defekt geworden sind
  • Zulassungsdatum der oben geschriebenen Fahrzeuge
  • Motorisierungsart dieser Fahrzeuge (Mit Diesel oder Benzin angetrieben)
  • Fahrzeugart(Typ11,Typ12, Typ21 oder Typ22)
  • Fahrzeugmarke (OEM1 oder OEM2)
  • Fehlermeldung aller Motoren (Fehlerhaft oder nicht) einschließlich Fehlermeldung ihrer Komponente
Nr. Faktoren directory name file name Spezifikation
1 Zulassungsdatum “./Data/Zulassungen” “Zulassungen_alle_Fahrzeuge.csv”
2 Fehlerdatum der Fahrzeuge “./Data/Fahrzeug” “Fahrzeuge_OEM1_Typ11.csv” Typ 11
3 “Fahrzeuge_OEM1_Typ12.csv” Typ 12
4 “Fahrzeuge_OEM2_Typ21.csv” Typ 21
5 “Fahrzeuge_OEM2_Typ22.csv” Typ 22
6 Motoren der Fahrzeuge “./Data/Fahrzeug” “Bestandteile_Fahrzeuge_OEM1_Typ11.csv” Typ 11
7 “Bestandteile_Fahrzeuge_OEM1_Typ12.csv” Typ 12
8 “Bestandteile_Fahrzeuge_OEM2_Typ21.csv” Typ 21
9 “Bestandteile_Fahrzeuge_OEM2_Typ22.csv” Typ 22
10 Fehlerdatum der Motoren “./Data/Komponente” “Komponente_K1BE1.csv”
11 “Komponente_K1BE2.csv”
12 “Komponente_K1DI1.csv”
13 “Komponente_K1DI2.txt”
14 Bestandteile der Motoren “./Data/Komponente” “Bestandteile_Komponente_K1BE1.csv”
15 “Bestandteile_Komponente_K1BE2.csv”
16 “Bestandteile_Komponente_K1DI1.csv”
17 “Bestandteile_Komponente_K1DI2.csv”
18-28 Einzelteile der Motoren “./Data/Einzelteile” “Einzelteil_T0X.txt” X = 01 bis 10

1.3 Einlesen der Rohdaten

Einzelteile 01 bis 10

Obwohl es 38 Einzelteile gibt, werden nur die Dateien mit Data zu den Einzelteilen 1-10 eingelesen, weil sie die Bestandteile der unterschiedlichen Motoren sind. Die Dateien, die ausführliche Informationen zum Einzelteil 1, 2, 3, 7 und 9 enthalten, haben so ein Format, dass es keine entsprechende Funktion gibt, die nach dem Einlesen unmittelbar aus dem original Format eine übersichtliche Struktur erzeugen würde. Deswegen werden die Dateien auf die folgende Weise modifiziert. Die Data in der Dateien werden in übersichtliche Zeile nach der Analysierung ihrer Struktur organisiert und die Field Parameters werden simplifiziert, was es ermöglicht, die Dateien durch eine Funktion wie Fread einzulesen, um eine Data Frame zu erzeugen.

Einzelteil 01

# die Daten im Einzelteil_T01.txt habe fogende Merkmal:
#   -die 2. Spalt von Oberservation ist überschüssig , 3. Spalt ist  die echte ID_T01
#   -Trennzeichen zwischen Spalten ist  " | | " , und in  ASCII(hex) ist \x20\x7c\x20\x7c\x20 
#   -Trennzeichen zwischen Zeilen ist " "(einzel Leerzeichen) und in  ASCII(hex) ist \x20
#
#Fehler :
#   -Zeichen "Fahrleistung" und  "A" ist Bestandteil von Datensatz (NA), bitte vermeiden sie als Pattern zu nutzen 
#   -bei ersetzen durch "str_replace_all" hast du falsch Pattern genutzt. einstellige Pipeline "|" bedeutet logische operation "Oder", das Zeichen "\" kann wörtliche Bedeutung einer Stelle nutzen. deswegen die richtige Format von " | | "ist  " \\| \\| "

Einzelteil_T01_roh <- read_file("Data/Einzelteil/Einzelteil_T01.txt") %>%
  str_replace_all(" \\| \\| " , ",") %>%
  str_replace_all(" ", "\n")%>%
  
  fread()

Einzelteil 02

Einzelteil_T02_roh <- read_file("Data/Einzelteil/Einzelteil_T02.txt") %>%
  str_replace_all("\t","\n") %>%
  str_replace_all("  ",",") %>%

  fread()

Einzelteil 03

# die unsichtbare Zeichen hat ASCII-Code \x0b  ,ist vertical tab
# das reserviert Zeichen "|" soll interperiert als normaler Zeichen  

Einzelteil_T03_roh <- read_file("Data/Einzelteil/Einzelteil_T03.txt") %>%
  str_replace_all("\\|",",") %>%
  str_replace_all("\x0b","\n") %>%
  
  fread()

Einzelteil 04 - 06

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Einzelteil_T04_roh <- fread("Data/Einzelteil/Einzelteil_T04.csv")
Einzelteil_T05_roh <- fread("Data/Einzelteil/Einzelteil_T05.csv")
Einzelteil_T06_roh <- fread("Data/Einzelteil/Einzelteil_T06.csv")

Einzelteil 07

# Trennzeich zwischen Zeilen korrigiert werden
Einzelteil_T07_roh <- read_file("Data/Einzelteil/Einzelteil_T07.txt") %>%
  str_replace_all("\"\"","\"\n\"") %>%

  fread(sep="\t")

Einzelteil 08

Dank des Formats dieser Datei kann sie einfach durch fread eingelesen werden.

Einzelteil_T08_roh <- fread("Data/Einzelteil/Einzelteil_T08.csv")

Einzelteil 09

#\v für ASCII-Code \x0b
Einzelteil_T09_roh <- read_file("Data/Einzelteil/Einzelteil_T09.txt") %>%
  str_replace_all("\v","\n") %>%
  
  fread(sep="\\")

Einzelteil 10

Dank des Formats dieser Datei kann sie einfach durch fread eingelesen werden.

Einzelteil_T10_roh <- fread("Data/Einzelteil/Einzelteil_T10.csv")

Fahrzeuge und ihre Bestandteile

Fahrzeug 11

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Fahrzeuge_OEM1_Typ11_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM1_Typ11.csv")
Bestandteile_Fahrzeuge_OEM1_Typ11_roh <- read_csv2("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM1_Typ11.csv")

Fahrzeug 12

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Fahrzeuge_OEM1_Typ12_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM1_Typ12.csv")
Bestandteile_Fahrzeuge_OEM1_Typ12_roh <- read_csv2("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM1_Typ12.csv")

Fahrzeug 21

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Fahrzeuge_OEM2_Typ21_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM2_Typ21.csv")
Bestandteile_Fahrzeuge_OEM2_Typ21_roh <- read_csv2("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM2_Typ21.csv")

Fahrzeug 22

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Fahrzeuge_OEM2_Typ22_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM2_Typ22.csv")
Bestandteile_Fahrzeuge_OEM2_Typ22_roh <- fread("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM2_Typ22.csv")

Komponente(Motoren) und ihre Bestandteile

Motor K1BE1

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Komponente_K1BE1_roh <- fread("Data/Komponente/Komponente_K1BE1.csv")
Bestandteile_Komponente_K1BE1_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1BE1.csv")

Motor K1BE2

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Komponente_K1BE2_roh <- fread("Data/Komponente/Komponente_K1BE2.csv")
Bestandteile_Komponente_K1BE2_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1BE2.csv")

Motor K1DI1

Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.

Komponente_K1DI1_roh <- fread("Data/Komponente/Komponente_K1DI1.csv")
Bestandteile_Komponente_K1DI1_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1DI1.csv")

Motor K1DI2

Folgende Datei wird so modifiziert, dass eine einlesbare Struktur generiert wird, mit der eine Funktion wie Fread eine Data Frame erstellen kann.

#Spalte V1 ist wiederholend zu X1
Komponente_K1DI2_roh <- read_file("Data/Komponente/Komponente_K1DI2.txt") %>%
  str_replace_all("\t","\n") %>%
  
  fread(sep="\\")

Dank des Formats folgender Datei kann sie einfach durch fread eingelesen werden.

Bestandteile_Komponente_K1DI2_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1DI2.csv")

Zulassungen

Dank des Formats dieser Datei kann sie einfach durch fread eingelesen werden.

Zulassungen_alle_Fahrzeuge_roh <- read_csv2("Data/Zulassungen/Zulassungen_alle_Fahrzeuge.csv")

2 Datenaufbereitung

Die durch die Importierung resultierenden Datensätze enthalten mehrere Variablen, die völlig irrelevant bezüglich des Zieles der CaseStudy sind, so wie Spalten, die nach der Importierung generiert wurden, die überhaupt keine Information haben. Entsprechend werden diese Variablen und Spalten entfernt und das Format der relevanten Variablen geändert, falls notwendig.

2.1 Datenaufbereitung der Einzelteilen

Die Tabellen aller in Motor verbauten Teilen weisen zwei unterschiedliche merkmale auf:

  • Merkmal1 :dupliziert Spalten wegen unterschiedlich Herstellernummer und Werksnummer

Betroffend sind Einzelteile: T01,T02, T05 und T09

str(Einzelteil_T01_roh)
## Classes 'data.table' and 'data.frame':   3204104 obs. of  23 variables:
##  $ V1                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                       : int  660 661 662 663 664 665 666 667 668 669 ...
##  $ ID_T01.x                 : chr  "1-201-2011-247" "1-201-2011-429" "1-201-2011-363" "1-201-2011-30" ...
##  $ Produktionsdatum.x       : chr  "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-07" ...
##  $ Herstellernummer.x       : int  201 201 201 201 201 201 201 201 201 201 ...
##  $ Werksnummer.x            : int  2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 ...
##  $ Fehlerhaft.x             : int  0 0 1 0 1 0 0 1 1 0 ...
##  $ Fehlerhaft_Datum.x       : chr  NA NA "2009-09-30" NA ...
##  $ Fehlerhaft_Fahrleistung.x: int  0 0 12983 0 12983 0 0 12983 12935 0 ...
##  $ ID_T01.y                 : chr  NA NA NA NA ...
##  $ Produktionsdatum.y       : chr  NA NA NA NA ...
##  $ Herstellernummer.y       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer.y            : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft.y             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum.y       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.y: num  NA NA NA NA NA NA NA NA NA NA ...
##  $ ID_T01                   : chr  NA NA NA NA ...
##  $ Produktionsdatum         : chr  NA NA NA NA ...
##  $ Herstellernummer         : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer              : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft               : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum         : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung  : num  NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T01_roh)
##        V1                X1            ID_T01.x         Produktionsdatum.x
##  Min.   :      1   Min.   :      1   Length:3204104     Length:3204104    
##  1st Qu.: 801027   1st Qu.: 801027   Class :character   Class :character  
##  Median :1602052   Median :1602052   Mode  :character   Mode  :character  
##  Mean   :1602052   Mean   :1602052                                        
##  3rd Qu.:2403078   3rd Qu.:2403078                                        
##  Max.   :3204104   Max.   :3204104                                        
##                                                                           
##  Herstellernummer.x Werksnummer.x      Fehlerhaft.x     Fehlerhaft_Datum.x
##  Min.   :201        Min.   :2011      Min.   :0.0       Length:3204104    
##  1st Qu.:201        1st Qu.:2011      1st Qu.:0.0       Class :character  
##  Median :201        Median :2011      Median :0.0       Mode  :character  
##  Mean   :201        Mean   :2011      Mean   :0.2                         
##  3rd Qu.:201        3rd Qu.:2011      3rd Qu.:0.0                         
##  Max.   :201        Max.   :2011      Max.   :1.0                         
##  NA's   :1922462    NA's   :1922462   NA's   :1922462                     
##  Fehlerhaft_Fahrleistung.x   ID_T01.y         Produktionsdatum.y
##  Min.   :     0            Length:3204104     Length:3204104    
##  1st Qu.:     0            Class :character   Class :character  
##  Median :     0            Mode  :character   Mode  :character  
##  Mean   :  2819                                                 
##  3rd Qu.:     0                                                 
##  Max.   :149790                                                 
##  NA's   :1922462                                                
##  Herstellernummer.y Werksnummer.y      Fehlerhaft.y     Fehlerhaft_Datum.y
##  Min.   :202        Min.   :2021      Min.   :0.0       Length:3204104    
##  1st Qu.:202        1st Qu.:2021      1st Qu.:0.0       Class :character  
##  Median :202        Median :2021      Median :0.0       Mode  :character  
##  Mean   :202        Mean   :2021      Mean   :0.2                         
##  3rd Qu.:202        3rd Qu.:2021      3rd Qu.:0.0                         
##  Max.   :202        Max.   :2021      Max.   :1.0                         
##  NA's   :1922462    NA's   :1922462   NA's   :1922462                     
##  Fehlerhaft_Fahrleistung.y    ID_T01          Produktionsdatum  
##  Min.   :     0            Length:3204104     Length:3204104    
##  1st Qu.:     0            Class :character   Class :character  
##  Median :     0            Mode  :character   Mode  :character  
##  Mean   :  6537                                                 
##  3rd Qu.:     0                                                 
##  Max.   :227423                                                 
##  NA's   :1922462                                                
##  Herstellernummer   Werksnummer        Fehlerhaft      Fehlerhaft_Datum  
##  Min.   :204       Min.   :2044      Min.   :0.0       Length:3204104    
##  1st Qu.:204       1st Qu.:2044      1st Qu.:0.0       Class :character  
##  Median :204       Median :2044      Median :0.0       Mode  :character  
##  Mean   :204       Mean   :2044      Mean   :0.2                         
##  3rd Qu.:204       3rd Qu.:2044      3rd Qu.:0.0                         
##  Max.   :204       Max.   :2044      Max.   :1.0                         
##  NA's   :2563284   NA's   :2563284   NA's   :2563284                     
##  Fehlerhaft_Fahrleistung
##  Min.   :     0         
##  1st Qu.:     0         
##  Median :     0         
##  Mean   :  6546         
##  3rd Qu.:     0         
##  Max.   :226953         
##  NA's   :2563284
str(Einzelteil_T02_roh)
## Classes 'data.table' and 'data.frame':   3204104 obs. of  16 variables:
##  $ V1                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                       : int  4 5 9 17 19 22 23 27 33 38 ...
##  $ ID_T02.x                 : chr  "2-201-2011-239" "2-201-2011-304" "2-201-2011-125" "2-201-2011-55" ...
##  $ Produktionsdatum.x       : chr  "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-07" ...
##  $ Herstellernummer.x       : int  201 201 201 201 201 201 201 201 201 201 ...
##  $ Werksnummer.x            : int  2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 ...
##  $ Fehlerhaft.x             : int  1 0 1 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum.x       : chr  "2010-04-09" NA "2010-04-09" NA ...
##  $ Fehlerhaft_Fahrleistung.x: num  38354 0 38354 0 0 ...
##  $ ID_T02.y                 : chr  NA NA NA NA ...
##  $ Produktionsdatum.y       : chr  NA NA NA NA ...
##  $ Herstellernummer.y       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer.y            : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft.y             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum.y       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.y: num  NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T02_roh)
##        V1                X1            ID_T02.x         Produktionsdatum.x
##  Min.   :      1   Min.   :      1   Length:3204104     Length:3204104    
##  1st Qu.: 801027   1st Qu.: 801027   Class :character   Class :character  
##  Median :1602052   Median :1602052   Mode  :character   Mode  :character  
##  Mean   :1602052   Mean   :1602052                                        
##  3rd Qu.:2403078   3rd Qu.:2403078                                        
##  Max.   :3204104   Max.   :3204104                                        
##                                                                           
##  Herstellernummer.x Werksnummer.x      Fehlerhaft.x     Fehlerhaft_Datum.x
##  Min.   :201        Min.   :2011      Min.   :0.0       Length:3204104    
##  1st Qu.:201        1st Qu.:2011      1st Qu.:0.0       Class :character  
##  Median :201        Median :2011      Median :0.0       Mode  :character  
##  Mean   :201        Mean   :2011      Mean   :0.1                         
##  3rd Qu.:201        3rd Qu.:2011      3rd Qu.:0.0                         
##  Max.   :201        Max.   :2011      Max.   :1.0                         
##  NA's   :2242873    NA's   :2242873   NA's   :2242873                     
##  Fehlerhaft_Fahrleistung.x   ID_T02.y         Produktionsdatum.y
##  Min.   :     0            Length:3204104     Length:3204104    
##  1st Qu.:     0            Class :character   Class :character  
##  Median :     0            Mode  :character   Mode  :character  
##  Mean   :  3528                                                 
##  3rd Qu.:     0                                                 
##  Max.   :274692                                                 
##  NA's   :2242873                                                
##  Herstellernummer.y Werksnummer.y     Fehlerhaft.y    Fehlerhaft_Datum.y
##  Min.   :202        Min.   :2022     Min.   :0.0      Length:3204104    
##  1st Qu.:202        1st Qu.:2022     1st Qu.:0.0      Class :character  
##  Median :202        Median :2022     Median :0.0      Mode  :character  
##  Mean   :202        Mean   :2022     Mean   :0.1                        
##  3rd Qu.:202        3rd Qu.:2022     3rd Qu.:0.0                        
##  Max.   :202        Max.   :2022     Max.   :1.0                        
##  NA's   :961231     NA's   :961231   NA's   :961231                     
##  Fehlerhaft_Fahrleistung.y
##  Min.   :     0           
##  1st Qu.:     0           
##  Median :     0           
##  Mean   :  3537           
##  3rd Qu.:     0           
##  Max.   :275189           
##  NA's   :961231
str(Einzelteil_T05_roh)
## Classes 'data.table' and 'data.frame':   1192630 obs. of  16 variables:
##  $ V1                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                       : int  1 3 10 17 18 19 20 23 28 29 ...
##  $ ID_T05.x                 : chr  "5-201-2012-82" "5-201-2012-172" "5-201-2012-23" "5-201-2012-47" ...
##  $ Produktionsdatum.x       : chr  "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-07" ...
##  $ Herstellernummer.x       : int  201 201 201 201 201 201 201 201 201 201 ...
##  $ Werksnummer.x            : int  2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 ...
##  $ Fehlerhaft.x             : int  1 0 0 1 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum.x       : chr  "2010-07-10" NA NA "2010-07-10" ...
##  $ Fehlerhaft_Fahrleistung.x: num  43163 0 0 43163 0 ...
##  $ ID_T05.y                 : chr  NA NA NA NA ...
##  $ Produktionsdatum.y       : chr  NA NA NA NA ...
##  $ Herstellernummer.y       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer.y            : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft.y             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum.y       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.y: num  NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T05_roh)
##        V1                X1            ID_T05.x         Produktionsdatum.x
##  Min.   :      1   Min.   :      1   Length:1192630     Length:1192630    
##  1st Qu.: 298158   1st Qu.: 298158   Class :character   Class :character  
##  Median : 596316   Median : 596316   Mode  :character   Mode  :character  
##  Mean   : 596316   Mean   : 596316                                        
##  3rd Qu.: 894473   3rd Qu.: 894473                                        
##  Max.   :1192630   Max.   :1192630                                        
##                                                                           
##  Herstellernummer.x Werksnummer.x     Fehlerhaft.x    Fehlerhaft_Datum.x
##  Min.   :201        Min.   :2012     Min.   :0.0      Length:1192630    
##  1st Qu.:201        1st Qu.:2012     1st Qu.:0.0      Class :character  
##  Median :201        Median :2012     Median :0.0      Mode  :character  
##  Mean   :201        Mean   :2012     Mean   :0.1                        
##  3rd Qu.:201        3rd Qu.:2012     3rd Qu.:0.0                        
##  Max.   :201        Max.   :2012     Max.   :1.0                        
##  NA's   :596315     NA's   :596315   NA's   :596315                     
##  Fehlerhaft_Fahrleistung.x   ID_T05.y         Produktionsdatum.y
##  Min.   :    0             Length:1192630     Length:1192630    
##  1st Qu.:    0             Class :character   Class :character  
##  Median :    0             Mode  :character   Mode  :character  
##  Mean   : 4000                                                  
##  3rd Qu.:    0                                                  
##  Max.   :45033                                                  
##  NA's   :596315                                                 
##  Herstellernummer.y Werksnummer.y     Fehlerhaft.y    Fehlerhaft_Datum.y
##  Min.   :202        Min.   :2023     Min.   :0.0      Length:1192630    
##  1st Qu.:202        1st Qu.:2023     1st Qu.:0.0      Class :character  
##  Median :202        Median :2023     Median :0.0      Mode  :character  
##  Mean   :202        Mean   :2023     Mean   :0.1                        
##  3rd Qu.:202        3rd Qu.:2023     3rd Qu.:0.0                        
##  Max.   :202        Max.   :2023     Max.   :1.0                        
##  NA's   :596315     NA's   :596315   NA's   :596315                     
##  Fehlerhaft_Fahrleistung.y
##  Min.   :    0            
##  1st Qu.:    0            
##  Median :    0            
##  Mean   : 4000            
##  3rd Qu.:    0            
##  Max.   :44955            
##  NA's   :596315
str(Einzelteil_T09_roh)
## Classes 'data.table' and 'data.frame':   409422 obs. of  16 variables:
##  $ V1                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                       : int  15 16 17 23 24 25 58 59 60 61 ...
##  $ ID_T09.x                 : chr  "9-203-2032-31" "9-203-2032-34" "9-203-2032-36" "9-203-2032-60" ...
##  $ Produktionsdatum.x       : chr  "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-08" ...
##  $ Herstellernummer.x       : int  203 203 203 203 203 203 203 203 203 203 ...
##  $ Werksnummer.x            : int  2032 2032 2032 2032 2032 2032 2032 2032 2032 2032 ...
##  $ Fehlerhaft.x             : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ Fehlerhaft_Datum.x       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.x: num  0 0 0 0 0 ...
##  $ ID_T09.y                 : chr  NA NA NA NA ...
##  $ Produktionsdatum.y       : chr  NA NA NA NA ...
##  $ Herstellernummer.y       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer.y            : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft.y             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum.y       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.y: num  NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T09_roh)
##        V1               X1           ID_T09.x         Produktionsdatum.x
##  Min.   :     1   Min.   :     1   Length:409422      Length:409422     
##  1st Qu.:102356   1st Qu.:102356   Class :character   Class :character  
##  Median :204712   Median :204712   Mode  :character   Mode  :character  
##  Mean   :204712   Mean   :204712                                        
##  3rd Qu.:307067   3rd Qu.:307067                                        
##  Max.   :409422   Max.   :409422                                        
##                                                                         
##  Herstellernummer.x Werksnummer.x     Fehlerhaft.x    Fehlerhaft_Datum.x
##  Min.   :203        Min.   :2032     Min.   :0.0      Length:409422     
##  1st Qu.:203        1st Qu.:2032     1st Qu.:0.0      Class :character  
##  Median :203        Median :2032     Median :0.0      Mode  :character  
##  Mean   :203        Mean   :2032     Mean   :0.1                        
##  3rd Qu.:203        3rd Qu.:2032     3rd Qu.:0.0                        
##  Max.   :203        Max.   :2032     Max.   :1.0                        
##  NA's   :286596     NA's   :286596   NA's   :286596                     
##  Fehlerhaft_Fahrleistung.x   ID_T09.y         Produktionsdatum.y
##  Min.   :  -848.3          Length:409422      Length:409422     
##  1st Qu.:     0.0          Class :character   Class :character  
##  Median :     0.0          Mode  :character   Mode  :character  
##  Mean   :   692.5                                               
##  3rd Qu.:     0.0                                               
##  Max.   :340518.1                                               
##  NA's   :286596                                                 
##  Herstellernummer.y Werksnummer.y     Fehlerhaft.y    Fehlerhaft_Datum.y
##  Min.   :204        Min.   :2043     Min.   :0.0      Length:409422     
##  1st Qu.:204        1st Qu.:2043     1st Qu.:0.0      Class :character  
##  Median :204        Median :2043     Median :0.0      Mode  :character  
##  Mean   :204        Mean   :2043     Mean   :0.1                        
##  3rd Qu.:204        3rd Qu.:2043     3rd Qu.:0.0                        
##  Max.   :204        Max.   :2043     Max.   :1.0                        
##  NA's   :122826     NA's   :122826   NA's   :122826                     
##  Fehlerhaft_Fahrleistung.y
##  Min.   :  -848.3         
##  1st Qu.:     0.0         
##  Median :     0.0         
##  Mean   :   761.4         
##  3rd Qu.:     0.0         
##  Max.   :359422.3         
##  NA's   :122826
# Deswegen für Aufbereitung der Rohdaten mit Merkmal1 wird so eine Funktioin definiert.

Tabelle_mit_duplizierte_Spalten_Aufbereiten<-function(dat){
  
  Id_Names_Index<- str_which(colnames(dat),regex("ID"))
  Id_Names<-colnames(dat)[Id_Names_Index]
  
  Produktionsdatum_Names_Index<- str_which(colnames(dat),regex("Produktionsdatum"))
  Produktionsdatum_Names<-colnames(dat)[Produktionsdatum_Names_Index]
  
  
  Fehlerhaft_Names_Index<- str_which(colnames(dat),regex("t(\\.x)?(\\.y)?\\b"))
  Fehlerhaft_Names<-colnames(dat)[Fehlerhaft_Names_Index]
  
  Fehlerhaft_Datum_Names_Index<- str_which(colnames(dat),regex("t_D"))
  Fehlerhaft_Datum_Names<-colnames(dat)[Fehlerhaft_Datum_Names_Index]
  
  
  #zu erst wurde nur relevante Spakten gewählt
  Relevant_Names<-c(Id_Names,
                    Produktionsdatum_Names,
                    Fehlerhaft_Names,
                    Fehlerhaft_Datum_Names)
  
  dat<-dat%>%
    dplyr::select(Relevant_Names)%>%
  
  #Bevor wir    tidyr::unite() nutzenm betroffende Spalten werden als Character gesetzt
    
    dplyr::mutate_all(base::as.character)%>%
    
  #Zusammensetzen von glechgestellte Spalten
    
    tidyr::unite(IDNummer,Id_Names,na.rm=TRUE)%>%
    tidyr::unite(Produktionsdatum,Produktionsdatum_Names,na.rm=TRUE)%>%
    tidyr::unite(Fehlerhaft,Fehlerhaft_Names,na.rm=TRUE)%>%
    tidyr::unite(Fehlerhaft_Datum,Fehlerhaft_Datum_Names,na.rm=TRUE)%>%
    
  #Umwandeln der Datentyp
    mutate(Produktionsdatum=lubridate::as_date(Produktionsdatum))%>%
    mutate(Fehlerhaft_Datum=lubridate::as_date(Fehlerhaft_Datum))%>%
    mutate(Fehlerhaft=base::as.integer(Fehlerhaft))%>%
    mutate(Fehlerhaft=base::as.logical(Fehlerhaft))
  
  
  
  
}


Einzelteil_T01<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T01_roh)
Einzelteil_T02<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T02_roh)
Einzelteil_T05<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T05_roh)
Einzelteil_T09<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T09_roh)
  • Merkmal2 :kein duplizierte Spalten,aber Produktionsdatum sind als eine Ganzzahl angegeben, die eigentlich den Zeitabstand zu Originsdatum Origin bedeutet

Betroffend sind Einzelteile: T03,T04,T06,T07,T08 und T10

str(Einzelteil_T03_roh)
## Classes 'data.table' and 'data.frame':   1192630 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T03                          : chr  "3-202-2023-249" "3-202-2022-8" "3-202-2023-192" "3-202-2023-16" ...
##  $ Herstellernummer                : int  202 202 202 202 202 202 202 202 202 202 ...
##  $ Werksnummer                     : int  2023 2022 2023 2023 2023 2022 2023 2023 2023 2023 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Produktionsdatum_Origin_01011970: int  14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T03_roh)
##        V1                X1             ID_T03          Herstellernummer
##  Min.   :      1   Min.   :      1   Length:1192630     Min.   :201.0   
##  1st Qu.: 298158   1st Qu.: 298158   Class :character   1st Qu.:202.0   
##  Median : 596316   Median : 596316   Mode  :character   Median :202.0   
##  Mean   : 596316   Mean   : 596316                      Mean   :201.9   
##  3rd Qu.: 894473   3rd Qu.: 894473                      3rd Qu.:202.0   
##  Max.   :1192630   Max.   :1192630                      Max.   :202.0   
##   Werksnummer     Fehlerhaft      Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :2011   Min.   :0.00000   Length:1192630     Min.   :    0          
##  1st Qu.:2022   1st Qu.:0.00000   Class :character   1st Qu.:    0          
##  Median :2023   Median :0.00000   Mode  :character   Median :    0          
##  Mean   :2022   Mean   :0.09987                      Mean   : 4230          
##  3rd Qu.:2023   3rd Qu.:0.00000                      3rd Qu.:    0          
##  Max.   :2023   Max.   :1.00000                      Max.   :47819          
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14190                    Length:1192630    
##  1st Qu.:14917                    Class :character  
##  Median :15644                    Mode  :character  
##  Mean   :15644                                      
##  3rd Qu.:16371                                      
##  Max.   :17110
str(Einzelteil_T04_roh)
## Classes 'data.table' and 'data.frame':   1192630 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T04                          : chr  "4-204-2043-113" "4-202-2023-18" "4-204-2043-98" "4-202-2023-51" ...
##  $ Herstellernummer                : int  204 202 204 202 204 202 202 204 204 204 ...
##  $ Werksnummer                     : int  2043 2023 2043 2023 2043 2023 2023 2042 2043 2043 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : chr  "0" "0" "0" "0" ...
##  $ Produktionsdatum_Origin_01011970: int  14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T04_roh)
##        V1                X1             ID_T04          Herstellernummer
##  Min.   :      1   Min.   :      1   Length:1192630     Min.   :202.0   
##  1st Qu.: 298158   1st Qu.: 298158   Class :character   1st Qu.:202.0   
##  Median : 596316   Median : 596316   Mode  :character   Median :204.0   
##  Mean   : 596316   Mean   : 596316                      Mean   :203.4   
##  3rd Qu.: 894473   3rd Qu.: 894473                      3rd Qu.:204.0   
##  Max.   :1192630   Max.   :1192630                      Max.   :204.0   
##   Werksnummer     Fehlerhaft     Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :2023   Min.   :0.0000   Length:1192630     Length:1192630         
##  1st Qu.:2023   1st Qu.:0.0000   Class :character   Class :character       
##  Median :2043   Median :0.0000   Mode  :character   Mode  :character       
##  Mean   :2037   Mean   :0.1003                                             
##  3rd Qu.:2043   3rd Qu.:0.0000                                             
##  Max.   :2043   Max.   :1.0000                                             
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14190                    Length:1192630    
##  1st Qu.:14919                    Class :character  
##  Median :15647                    Mode  :character  
##  Mean   :15647                                      
##  3rd Qu.:16376                                      
##  Max.   :17110
str(Einzelteil_T06_roh)
## Classes 'data.table' and 'data.frame':   1192630 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T06                          : chr  "6-204-2044-60" "6-203-2032-10" "6-204-2044-86" "6-203-2032-99" ...
##  $ Herstellernummer                : int  201 203 201 203 203 203 203 203 203 203 ...
##  $ Werksnummer                     : int  2044 2032 2044 2032 2032 2032 2032 2032 2032 2032 ...
##  $ Fehlerhaft                      : int  1 0 0 0 1 0 1 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  "2009-04-11" NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : num  6064 0 0 0 6064 ...
##  $ Produktionsdatum_Origin_01011970: int  14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T06_roh)
##        V1                X1             ID_T06          Herstellernummer
##  Min.   :      1   Min.   :      1   Length:1192630     Min.   :201.0   
##  1st Qu.: 298158   1st Qu.: 298158   Class :character   1st Qu.:201.0   
##  Median : 596316   Median : 596316   Mode  :character   Median :203.0   
##  Mean   : 596316   Mean   : 596316                      Mean   :202.2   
##  3rd Qu.: 894473   3rd Qu.: 894473                      3rd Qu.:203.0   
##  Max.   :1192630   Max.   :1192630                      Max.   :203.0   
##   Werksnummer     Fehlerhaft      Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :2032   Min.   :0.00000   Length:1192630     Min.   :   0.0         
##  1st Qu.:2032   1st Qu.:0.00000   Class :character   1st Qu.:   0.0         
##  Median :2032   Median :0.00000   Mode  :character   Median :   0.0         
##  Mean   :2037   Mean   :0.09999                      Mean   : 391.9         
##  3rd Qu.:2044   3rd Qu.:0.00000                      3rd Qu.:   0.0         
##  Max.   :2044   Max.   :1.00000                      Max.   :7534.0         
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14190                    Length:1192630    
##  1st Qu.:14919                    Class :character  
##  Median :15648                    Mode  :character  
##  Mean   :15648                                      
##  3rd Qu.:16376                                      
##  Max.   :17110
str(Einzelteil_T07_roh)
## Classes 'data.table' and 'data.frame':   409422 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T07                          : chr  "7-201-2012-30" "7-201-2012-101" "7-203-2031-19" "7-203-2031-23" ...
##  $ Herstellernummer                : int  201 201 203 203 203 201 201 201 201 201 ...
##  $ Werksnummer                     : int  2011 2011 2032 2032 2032 2011 2011 2011 2011 2011 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Produktionsdatum_Origin_01011970: int  14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T07_roh)
##        V1               X1            ID_T07          Herstellernummer
##  Min.   :     1   Min.   :     1   Length:409422      Min.   :201.0   
##  1st Qu.:102356   1st Qu.:102356   Class :character   1st Qu.:201.0   
##  Median :204712   Median :204712   Mode  :character   Median :201.0   
##  Mean   :204712   Mean   :204712                      Mean   :201.4   
##  3rd Qu.:307067   3rd Qu.:307067                      3rd Qu.:201.0   
##  Max.   :409422   Max.   :409422                      Max.   :203.0   
##   Werksnummer     Fehlerhaft     Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :2011   Min.   :0.0000   Length:409422      Min.   :  -453.1       
##  1st Qu.:2011   1st Qu.:0.0000   Class :character   1st Qu.:     0.0       
##  Median :2011   Median :0.0000   Mode  :character   Median :     0.0       
##  Mean   :2015   Mean   :0.1003                      Mean   :   388.0       
##  3rd Qu.:2011   3rd Qu.:0.0000                      3rd Qu.:     0.0       
##  Max.   :2032   Max.   :1.0000                      Max.   :192050.2       
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14190                    Length:409422     
##  1st Qu.:14910                    Class :character  
##  Median :15630                    Mode  :character  
##  Mean   :15631                                      
##  3rd Qu.:16352                                      
##  Max.   :17105
str(Einzelteil_T08_roh)
## Classes 'data.table' and 'data.frame':   409422 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T08                          : chr  "8-204-2041-38" "8-203-2031-8" "8-203-2031-43" "8-203-2031-45" ...
##  $ Herstellernummer                : int  204 203 203 203 203 204 203 203 203 203 ...
##  $ Werksnummer                     : int  2041 2032 2032 2032 2032 2041 2032 2032 2032 2032 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Produktionsdatum_Origin_01011970: int  14190 14190 14190 14190 14190 14190 14191 14191 14191 14191 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T08_roh)
##        V1               X1            ID_T08          Herstellernummer
##  Min.   :     1   Min.   :     1   Length:409422      Min.   :203.0   
##  1st Qu.:102356   1st Qu.:102356   Class :character   1st Qu.:203.0   
##  Median :204712   Median :204712   Mode  :character   Median :203.0   
##  Mean   :204712   Mean   :204712                      Mean   :203.4   
##  3rd Qu.:307067   3rd Qu.:307067                      3rd Qu.:204.0   
##  Max.   :409422   Max.   :409422                      Max.   :204.0   
##   Werksnummer     Fehlerhaft     Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :2032   Min.   :0.0000   Length:409422      Min.   :     0         
##  1st Qu.:2032   1st Qu.:0.0000   Class :character   1st Qu.:     0         
##  Median :2032   Median :0.0000   Mode  :character   Median :     0         
##  Mean   :2036   Mean   :0.1001                      Mean   :  2508         
##  3rd Qu.:2041   3rd Qu.:0.0000                      3rd Qu.:     0         
##  Max.   :2041   Max.   :1.0000                      Max.   :216046         
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14190                    Length:409422     
##  1st Qu.:14910                    Class :character  
##  Median :15631                    Mode  :character  
##  Mean   :15631                                      
##  3rd Qu.:16352                                      
##  Max.   :17108
str(Einzelteil_T09_roh)
## Classes 'data.table' and 'data.frame':   409422 obs. of  16 variables:
##  $ V1                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                       : int  15 16 17 23 24 25 58 59 60 61 ...
##  $ ID_T09.x                 : chr  "9-203-2032-31" "9-203-2032-34" "9-203-2032-36" "9-203-2032-60" ...
##  $ Produktionsdatum.x       : chr  "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-08" ...
##  $ Herstellernummer.x       : int  203 203 203 203 203 203 203 203 203 203 ...
##  $ Werksnummer.x            : int  2032 2032 2032 2032 2032 2032 2032 2032 2032 2032 ...
##  $ Fehlerhaft.x             : int  0 0 0 0 0 0 1 0 0 0 ...
##  $ Fehlerhaft_Datum.x       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.x: num  0 0 0 0 0 ...
##  $ ID_T09.y                 : chr  NA NA NA NA ...
##  $ Produktionsdatum.y       : chr  NA NA NA NA ...
##  $ Herstellernummer.y       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer.y            : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft.y             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum.y       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.y: num  NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T09_roh)
##        V1               X1           ID_T09.x         Produktionsdatum.x
##  Min.   :     1   Min.   :     1   Length:409422      Length:409422     
##  1st Qu.:102356   1st Qu.:102356   Class :character   Class :character  
##  Median :204712   Median :204712   Mode  :character   Mode  :character  
##  Mean   :204712   Mean   :204712                                        
##  3rd Qu.:307067   3rd Qu.:307067                                        
##  Max.   :409422   Max.   :409422                                        
##                                                                         
##  Herstellernummer.x Werksnummer.x     Fehlerhaft.x    Fehlerhaft_Datum.x
##  Min.   :203        Min.   :2032     Min.   :0.0      Length:409422     
##  1st Qu.:203        1st Qu.:2032     1st Qu.:0.0      Class :character  
##  Median :203        Median :2032     Median :0.0      Mode  :character  
##  Mean   :203        Mean   :2032     Mean   :0.1                        
##  3rd Qu.:203        3rd Qu.:2032     3rd Qu.:0.0                        
##  Max.   :203        Max.   :2032     Max.   :1.0                        
##  NA's   :286596     NA's   :286596   NA's   :286596                     
##  Fehlerhaft_Fahrleistung.x   ID_T09.y         Produktionsdatum.y
##  Min.   :  -848.3          Length:409422      Length:409422     
##  1st Qu.:     0.0          Class :character   Class :character  
##  Median :     0.0          Mode  :character   Mode  :character  
##  Mean   :   692.5                                               
##  3rd Qu.:     0.0                                               
##  Max.   :340518.1                                               
##  NA's   :286596                                                 
##  Herstellernummer.y Werksnummer.y     Fehlerhaft.y    Fehlerhaft_Datum.y
##  Min.   :204        Min.   :2043     Min.   :0.0      Length:409422     
##  1st Qu.:204        1st Qu.:2043     1st Qu.:0.0      Class :character  
##  Median :204        Median :2043     Median :0.0      Mode  :character  
##  Mean   :204        Mean   :2043     Mean   :0.1                        
##  3rd Qu.:204        3rd Qu.:2043     3rd Qu.:0.0                        
##  Max.   :204        Max.   :2043     Max.   :1.0                        
##  NA's   :122826     NA's   :122826   NA's   :122826                     
##  Fehlerhaft_Fahrleistung.y
##  Min.   :  -848.3         
##  1st Qu.:     0.0         
##  Median :     0.0         
##  Mean   :   761.4         
##  3rd Qu.:     0.0         
##  Max.   :359422.3         
##  NA's   :122826
str(Einzelteil_T10_roh)
## Classes 'data.table' and 'data.frame':   409422 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T10                          : chr  "10-204-2042-41" "10-203-2032-22" "10-203-2032-28" "10-203-2032-37" ...
##  $ Herstellernummer                : int  204 203 203 203 203 203 203 204 204 204 ...
##  $ Werksnummer                     : int  2043 2032 2032 2032 2032 2032 2032 2043 2043 2043 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : chr  "0" "0" "0" "0" ...
##  $ Produktionsdatum_Origin_01011970: int  14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T10_roh)
##        V1               X1            ID_T10          Herstellernummer
##  Min.   :     1   Min.   :     1   Length:409422      Min.   :203.0   
##  1st Qu.:102356   1st Qu.:102356   Class :character   1st Qu.:203.0   
##  Median :204712   Median :204712   Mode  :character   Median :204.0   
##  Mean   :204712   Mean   :204712                      Mean   :203.6   
##  3rd Qu.:307067   3rd Qu.:307067                      3rd Qu.:204.0   
##  Max.   :409422   Max.   :409422                      Max.   :204.0   
##   Werksnummer     Fehlerhaft      Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :2032   Min.   :0.00000   Length:409422      Length:409422          
##  1st Qu.:2032   1st Qu.:0.00000   Class :character   Class :character       
##  Median :2043   Median :0.00000   Mode  :character   Mode  :character       
##  Mean   :2039   Mean   :0.09999                                             
##  3rd Qu.:2043   3rd Qu.:0.00000                                             
##  Max.   :2043   Max.   :1.00000                                             
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14190                    Length:409422     
##  1st Qu.:14911                    Class :character  
##  Median :15632                    Mode  :character  
##  Mean   :15632                                      
##  3rd Qu.:16352                                      
##  Max.   :17102
# Deswegen für Rohdaten mit Merkmal2 wird so eine Funktioin definiert.

Tabelle_mit_falschem_Produktionsdatum_Aufbereiten<-function(dat){
  
  Id_Name_Index<- str_which(colnames(dat),regex("ID"))
  Id_Name<-colnames(dat)[Id_Name_Index]
  
  Produktionsdatum_Name_Index<- str_which(colnames(dat),regex("Pro"))
  Produktionsdatum_Name<-colnames(dat)[Produktionsdatum_Name_Index]
  
  
  Fehlerhaft_Name_Index<- str_which(colnames(dat),regex("t\\b"))
  Fehlerhaft_Name<-colnames(dat)[Fehlerhaft_Name_Index]
  
  Fehlerhaft_Datum_Name_Index<- str_which(colnames(dat),regex("t_D"))
  Fehlerhaft_Datum_Name<-colnames(dat)[Fehlerhaft_Datum_Name_Index]
  
  
  #zu erst wurde nur relevante Spakten gewählt
  Relevant_Names<-c(Id_Name,
                    Produktionsdatum_Name,
                    Fehlerhaft_Name,
                    Fehlerhaft_Datum_Name,
                    "origin")
  dat<-dat%>%
    dplyr::select(Relevant_Names)%>%
  #Umbenennen
    dplyr::rename(IDNummer=eply::unquote(Id_Name)) %>%
    dplyr::rename(Produktionsdatum=eply::unquote(Produktionsdatum_Name)) %>%
    dplyr::rename(Fehlerhaft=eply::unquote(Fehlerhaft_Name)) %>%
    dplyr::rename(Fehlerhaft_Datum=eply::unquote(Fehlerhaft_Datum_Name)) %>%
  #Umwandeln der Datentyp
    dplyr::mutate(Fehlerhaft_Datum=lubridate::as_date(Fehlerhaft_Datum))%>%
    dplyr::mutate(Fehlerhaft=base::as.integer(Fehlerhaft))%>%
    dplyr::mutate(Fehlerhaft=base::as.logical(Fehlerhaft))%>%
  #Behandeln Produktionsdatum
    dplyr::mutate(Produktionsdatum=Produktionsdatum+lubridate::dmy(origin))%>%
  #Entfernung von Variable origin
    dplyr::select(-origin)



  
}
Einzelteil_T03<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T03_roh)
Einzelteil_T04<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T04_roh)
Einzelteil_T06<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T06_roh)
Einzelteil_T07<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T07_roh)
Einzelteil_T08<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T08_roh)
Einzelteil_T10<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T10_roh)



#remove unused variable

rm(Einzelteil_T01_roh)
rm(Einzelteil_T02_roh)
rm(Einzelteil_T03_roh)
rm(Einzelteil_T04_roh)
rm(Einzelteil_T05_roh)
rm(Einzelteil_T06_roh)
rm(Einzelteil_T07_roh)
rm(Einzelteil_T08_roh)
rm(Einzelteil_T09_roh)
rm(Einzelteil_T10_roh)

2.2 Datenaufbereitung der Motoren

Die Tabellen aller Motoren weisen auch zwei unterschiedliche merkmale auf.Das ist ähnlich wie Merkmale von Einteilen.

  • Merkmal1 :dupliziert Spalten wegen unterschiedlich Herstellernummer und Werksnummer

Betroffender ist Motor: K1DI1

  • Merkmal2 :kein duplizierte Spalten,aber Produktionsdatum sind als eine Ganzzahl angegeben, die eigentlich den Zeitabstand zu Originsdatum Origin bedeutet

Betroffende sind Motoren: K1DI2,K1BE1 und K1BE2

Die Relevante Spalten sind identisch,deswegen ist die vorher definierte Funktion wieder verwendbar

str(Komponente_K1DI1_roh)
## Classes 'data.table' and 'data.frame':   1192630 obs. of  23 variables:
##  $ V1                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                       : int  1 2 5 6 7 8 9 10 11 12 ...
##  $ ID_Motor.x               : chr  "K1DI1-101-1041-90" "K1DI1-101-1041-12" "K1DI1-101-1041-55" "K1DI1-101-1041-34" ...
##  $ Produktionsdatum.x       : chr  "2008-11-13" "2008-11-13" "2008-11-13" "2008-11-13" ...
##  $ Herstellernummer.x       : int  101 101 101 101 101 101 101 101 101 101 ...
##  $ Werksnummer.x            : int  1011 1011 1011 1011 1011 1011 1011 1011 1011 1011 ...
##  $ Fehlerhaft.x             : int  0 1 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum.x       : chr  NA "2010-03-09" NA NA ...
##  $ Fehlerhaft_Fahrleistung.x: int  0 21509 0 0 0 0 0 0 0 0 ...
##  $ ID_Motor.y               : chr  NA NA NA NA ...
##  $ Produktionsdatum.y       : chr  NA NA NA NA ...
##  $ Herstellernummer.y       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer.y            : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft.y             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum.y       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung.y: int  NA NA NA NA NA NA NA NA NA NA ...
##  $ ID_Motor                 : chr  NA NA NA NA ...
##  $ Produktionsdatum         : chr  NA NA NA NA ...
##  $ Herstellernummer         : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Werksnummer              : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft               : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Fehlerhaft_Datum         : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung  : int  NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1DI1_roh)
##        V1                X1           ID_Motor.x        Produktionsdatum.x
##  Min.   :      1   Min.   :      1   Length:1192630     Length:1192630    
##  1st Qu.: 298158   1st Qu.: 298158   Class :character   Class :character  
##  Median : 596316   Median : 596316   Mode  :character   Mode  :character  
##  Mean   : 596316   Mean   : 596316                                        
##  3rd Qu.: 894473   3rd Qu.: 894473                                        
##  Max.   :1192630   Max.   :1192630                                        
##                                                                           
##  Herstellernummer.x Werksnummer.x     Fehlerhaft.x    Fehlerhaft_Datum.x
##  Min.   :101        Min.   :1011     Min.   :0.0      Length:1192630    
##  1st Qu.:101        1st Qu.:1011     1st Qu.:0.0      Class :character  
##  Median :101        Median :1011     Median :0.0      Mode  :character  
##  Mean   :101        Mean   :1011     Mean   :0.1                        
##  3rd Qu.:101        3rd Qu.:1011     3rd Qu.:0.0                        
##  Max.   :101        Max.   :1011     Max.   :1.0                        
##  NA's   :715578     NA's   :715578   NA's   :715578                     
##  Fehlerhaft_Fahrleistung.x  ID_Motor.y        Produktionsdatum.y
##  Min.   :    0             Length:1192630     Length:1192630    
##  1st Qu.:    0             Class :character   Class :character  
##  Median :    0             Mode  :character   Mode  :character  
##  Mean   : 1994                                                  
##  3rd Qu.:    0                                                  
##  Max.   :22757                                                  
##  NA's   :715578                                                 
##  Herstellernummer.y Werksnummer.y     Fehlerhaft.y    Fehlerhaft_Datum.y
##  Min.   :102        Min.   :1021     Min.   :0.0      Length:1192630    
##  1st Qu.:102        1st Qu.:1021     1st Qu.:0.0      Class :character  
##  Median :102        Median :1021     Median :0.0      Mode  :character  
##  Mean   :102        Mean   :1021     Mean   :0.1                        
##  3rd Qu.:102        3rd Qu.:1021     3rd Qu.:0.0                        
##  Max.   :102        Max.   :1021     Max.   :1.0                        
##  NA's   :954104     NA's   :954104   NA's   :954104                     
##  Fehlerhaft_Fahrleistung.y   ID_Motor         Produktionsdatum  
##  Min.   :    0             Length:1192630     Length:1192630    
##  1st Qu.:    0             Class :character   Class :character  
##  Median :    0             Mode  :character   Mode  :character  
##  Mean   : 2003                                                  
##  3rd Qu.:    0                                                  
##  Max.   :22707                                                  
##  NA's   :954104                                                 
##  Herstellernummer  Werksnummer       Fehlerhaft     Fehlerhaft_Datum  
##  Min.   :103      Min.   :1031     Min.   :0.0      Length:1192630    
##  1st Qu.:103      1st Qu.:1031     1st Qu.:0.0      Class :character  
##  Median :103      Median :1031     Median :0.0      Mode  :character  
##  Mean   :103      Mean   :1031     Mean   :0.1                        
##  3rd Qu.:103      3rd Qu.:1031     3rd Qu.:0.0                        
##  Max.   :103      Max.   :1031     Max.   :1.0                        
##  NA's   :715578   NA's   :715578   NA's   :715578                     
##  Fehlerhaft_Fahrleistung
##  Min.   :    0          
##  1st Qu.:    0          
##  Median :    0          
##  Mean   : 1998          
##  3rd Qu.:    0          
##  Max.   :22807          
##  NA's   :715578
str(Komponente_K1DI2_roh)
## Classes 'data.table' and 'data.frame':   409422 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Motor                        : chr  "K1DI2-103-1031-2" "K1DI2-103-1031-9" "K1DI2-103-1031-10" "K1DI2-103-1031-11" ...
##  $ Herstellernummer                : int  103 103 103 103 103 103 103 103 103 103 ...
##  $ Werksnummer                     : int  1031 1031 1031 1031 1031 1031 1031 1031 1031 1031 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 0 1 1 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : int  0 0 0 0 0 0 0 0 27498 27498 ...
##  $ Produktionsdatum_Origin_01011970: int  14195 14196 14196 14196 14196 14196 14196 14196 14196 14196 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1DI2_roh)
##        V1               X1           ID_Motor         Herstellernummer
##  Min.   :     1   Min.   :     1   Length:409422      Min.   :102.0   
##  1st Qu.:102356   1st Qu.:102356   Class :character   1st Qu.:102.0   
##  Median :204712   Median :204712   Mode  :character   Median :102.0   
##  Mean   :204712   Mean   :204712                      Mean   :102.4   
##  3rd Qu.:307067   3rd Qu.:307067                      3rd Qu.:103.0   
##  Max.   :409422   Max.   :409422                      Max.   :103.0   
##   Werksnummer     Fehlerhaft      Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :1021   Min.   :0.00000   Length:409422      Min.   :     0         
##  1st Qu.:1021   1st Qu.:0.00000   Class :character   1st Qu.:     0         
##  Median :1021   Median :0.00000   Mode  :character   Median :     0         
##  Mean   :1025   Mean   :0.09991                      Mean   :  2348         
##  3rd Qu.:1031   3rd Qu.:0.00000                      3rd Qu.:     0         
##  Max.   :1031   Max.   :1.00000                      Max.   :295258         
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14195                    Length:409422     
##  1st Qu.:14927                    Class :character  
##  Median :15656                    Mode  :character  
##  Mean   :15656                                      
##  3rd Qu.:16384                                      
##  Max.   :17121
str(Komponente_K1BE1_roh)
## Classes 'data.table' and 'data.frame':   1192630 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Motor                        : chr  "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-90" "K1BE1-101-1011-2" ...
##  $ Herstellernummer                : int  101 101 101 101 101 101 101 101 101 101 ...
##  $ Werksnummer                     : int  1011 1011 1011 1011 1011 1011 1011 1011 1011 1011 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 1 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : int  0 0 0 0 0 0 0 31767 0 0 ...
##  $ Produktionsdatum_Origin_01011970: int  14195 14196 14196 14195 14196 14196 14196 14196 14196 14196 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1BE1_roh)
##        V1                X1            ID_Motor         Herstellernummer
##  Min.   :      1   Min.   :      1   Length:1192630     Min.   :101.0   
##  1st Qu.: 298158   1st Qu.: 298158   Class :character   1st Qu.:101.0   
##  Median : 596316   Median : 596316   Mode  :character   Median :104.0   
##  Mean   : 596316   Mean   : 596316                      Mean   :102.9   
##  3rd Qu.: 894473   3rd Qu.: 894473                      3rd Qu.:104.0   
##  Max.   :1192630   Max.   :1192630                      Max.   :104.0   
##   Werksnummer     Fehlerhaft     Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :1011   Min.   :0.0000   Length:1192630     Min.   :    0          
##  1st Qu.:1011   1st Qu.:0.0000   Class :character   1st Qu.:    0          
##  Median :1041   Median :0.0000   Mode  :character   Median :    0          
##  Mean   :1030   Mean   :0.1754                      Mean   : 5234          
##  3rd Qu.:1041   3rd Qu.:0.0000                      3rd Qu.:    0          
##  Max.   :1041   Max.   :1.0000                      Max.   :33765          
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14195                    Length:1192630    
##  1st Qu.:14926                    Class :character  
##  Median :15657                    Mode  :character  
##  Mean   :15656                                      
##  3rd Qu.:16387                                      
##  Max.   :17121
str(Komponente_K1BE2_roh)
## Classes 'data.table' and 'data.frame':   409422 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Motor                        : chr  "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-10" "K1BE2-101-1011-11" ...
##  $ Herstellernummer                : int  101 101 101 101 101 104 104 104 104 104 ...
##  $ Werksnummer                     : int  1011 1011 1011 1011 1011 1041 1041 1041 1041 1041 ...
##  $ Fehlerhaft                      : int  0 0 0 0 1 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : int  0 0 0 0 9272 0 0 0 0 0 ...
##  $ Produktionsdatum_Origin_01011970: int  14196 14196 14196 14196 14196 14197 14197 14197 14197 14197 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1BE2_roh)
##        V1               X1           ID_Motor         Herstellernummer
##  Min.   :     1   Min.   :     1   Length:409422      Min.   :101.0   
##  1st Qu.:102356   1st Qu.:102356   Class :character   1st Qu.:104.0   
##  Median :204712   Median :204712   Mode  :character   Median :104.0   
##  Mean   :204712   Mean   :204712                      Mean   :103.4   
##  3rd Qu.:307067   3rd Qu.:307067                      3rd Qu.:104.0   
##  Max.   :409422   Max.   :409422                      Max.   :104.0   
##   Werksnummer     Fehlerhaft     Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :1011   Min.   :0.0000   Length:409422      Min.   :     0.0       
##  1st Qu.:1041   1st Qu.:0.0000   Class :character   1st Qu.:     0.0       
##  Median :1041   Median :0.0000   Mode  :character   Median :     0.0       
##  Mean   :1035   Mean   :0.1753                      Mean   :   923.4       
##  3rd Qu.:1041   3rd Qu.:0.0000                      3rd Qu.:     0.0       
##  Max.   :1041   Max.   :1.0000                      Max.   :270001.0       
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14195                    Length:409422     
##  1st Qu.:14927                    Class :character  
##  Median :15653                    Mode  :character  
##  Mean   :15655                                      
##  3rd Qu.:16384                                      
##  Max.   :17120
Komponente_K1DI1<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Komponente_K1DI1_roh)

Komponente_K1DI2<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Komponente_K1DI2_roh)

Komponente_K1BE1<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Komponente_K1BE1_roh)

Komponente_K1BE2<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Komponente_K1BE2_roh)


rm(Komponente_K1DI1_roh,
   Komponente_K1DI2_roh,
   Komponente_K1BE1_roh,
   Komponente_K1BE2_roh)

2.3 Datenaufbereitung der Motorbestandteile

Bei Bestandteile von Motoren ist die eindeutige Beziehung zwischen Einzelteile und Motor wichtig. Ein bestimmiter Einzelteil muss genau eine Moter zugeordnet.Deswegen soll unsere Ideale Datenstruktur von Tabelle Motorbestandteile nur 2 Spalten ID_Teil,ID_Motor

#Benzinmotern : K1BE1 
str(Bestandteile_Komponente_K1BE1_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1192630 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-201-2011-45" "1-201-2011-429" "1-201-2011-399" "1-201-2011-335" ...
##  $ ID_T2   : chr  "2-201-2011-161" "2-201-2011-239" "2-201-2011-220" "2-202-2022-463" ...
##  $ ID_T3   : chr  "3-202-2023-14" "3-202-2023-16" "3-202-2023-46" "3-202-2023-149" ...
##  $ ID_T4   : chr  "4-202-2023-20" "4-202-2023-51" "4-202-2023-93" "4-204-2042-18" ...
##  $ ID_K1BE1: chr  "K1BE1-101-1011-1" "K1BE1-101-1011-2" "K1BE1-101-1011-3" "K1BE1-101-1011-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T3 = col_character(),
##   ..   ID_T4 = col_character(),
##   ..   ID_K1BE1 = col_character()
##   .. )
str(Bestandteile_Komponente_K1BE2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-202-2021-339" "1-201-2011-57" "1-202-2021-101" "1-204-2044-201" ...
##  $ ID_T2   : chr  "2-202-2022-171" "2-201-2011-260" "2-202-2022-335" "2-201-2011-312" ...
##  $ ID_T7   : chr  "7-203-2031-9" "7-201-2012-30" "7-201-2012-101" "7-203-2031-2" ...
##  $ ID_T8   : chr  "8-204-2041-12" "8-204-2041-38" "8-203-2031-8" "8-203-2031-12" ...
##  $ ID_K1BE2: chr  "K1BE2-101-1011-1" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T7 = col_character(),
##   ..   ID_T8 = col_character(),
##   ..   ID_K1BE2 = col_character()
##   .. )
anyNA(Bestandteile_Komponente_K1BE1_roh)
## [1] FALSE
#Benzinmotern :  K1BE2
str(Bestandteile_Komponente_K1BE2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-202-2021-339" "1-201-2011-57" "1-202-2021-101" "1-204-2044-201" ...
##  $ ID_T2   : chr  "2-202-2022-171" "2-201-2011-260" "2-202-2022-335" "2-201-2011-312" ...
##  $ ID_T7   : chr  "7-203-2031-9" "7-201-2012-30" "7-201-2012-101" "7-203-2031-2" ...
##  $ ID_T8   : chr  "8-204-2041-12" "8-204-2041-38" "8-203-2031-8" "8-203-2031-12" ...
##  $ ID_K1BE2: chr  "K1BE2-101-1011-1" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T7 = col_character(),
##   ..   ID_T8 = col_character(),
##   ..   ID_K1BE2 = col_character()
##   .. )
str(Bestandteile_Komponente_K1BE2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-202-2021-339" "1-201-2011-57" "1-202-2021-101" "1-204-2044-201" ...
##  $ ID_T2   : chr  "2-202-2022-171" "2-201-2011-260" "2-202-2022-335" "2-201-2011-312" ...
##  $ ID_T7   : chr  "7-203-2031-9" "7-201-2012-30" "7-201-2012-101" "7-203-2031-2" ...
##  $ ID_T8   : chr  "8-204-2041-12" "8-204-2041-38" "8-203-2031-8" "8-203-2031-12" ...
##  $ ID_K1BE2: chr  "K1BE2-101-1011-1" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T7 = col_character(),
##   ..   ID_T8 = col_character(),
##   ..   ID_K1BE2 = col_character()
##   .. )
anyNA(Bestandteile_Komponente_K1BE2_roh)
## [1] FALSE
#Dieselmoteren :K1DI1 
str(Bestandteile_Komponente_K1DI1_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1192630 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-204-2044-27" "1-202-2021-32" "1-201-2011-238" "1-202-2021-297" ...
##  $ ID_T2   : chr  "2-201-2011-144" "2-202-2022-577" "2-202-2022-514" "2-202-2022-626" ...
##  $ ID_T5   : chr  "5-202-2012-89" "5-202-2012-155" "5-202-2012-199" "5-201-2012-57" ...
##  $ ID_T6   : chr  "6-203-2032-5" "6-203-2032-79" "6-203-2032-136" "6-203-2032-147" ...
##  $ ID_K1DI1: chr  "K1DI1-101-1041-1" "K1DI1-101-1041-2" "K1DI1-101-1041-3" "K1DI1-101-1041-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T5 = col_character(),
##   ..   ID_T6 = col_character(),
##   ..   ID_K1DI1 = col_character()
##   .. )
str(Bestandteile_Komponente_K1DI1_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1192630 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-204-2044-27" "1-202-2021-32" "1-201-2011-238" "1-202-2021-297" ...
##  $ ID_T2   : chr  "2-201-2011-144" "2-202-2022-577" "2-202-2022-514" "2-202-2022-626" ...
##  $ ID_T5   : chr  "5-202-2012-89" "5-202-2012-155" "5-202-2012-199" "5-201-2012-57" ...
##  $ ID_T6   : chr  "6-203-2032-5" "6-203-2032-79" "6-203-2032-136" "6-203-2032-147" ...
##  $ ID_K1DI1: chr  "K1DI1-101-1041-1" "K1DI1-101-1041-2" "K1DI1-101-1041-3" "K1DI1-101-1041-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T5 = col_character(),
##   ..   ID_T6 = col_character(),
##   ..   ID_K1DI1 = col_character()
##   .. )
anyNA(Bestandteile_Komponente_K1DI1_roh)
## [1] FALSE
#Dieselmoteren :K1DI2
str(Bestandteile_Komponente_K1DI2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-204-2044-183" "1-201-2011-246" "1-201-2011-152" "1-201-2011-134" ...
##  $ ID_T2   : chr  "2-202-2022-551" "2-202-2022-738" "2-201-2011-181" "2-202-2022-561" ...
##  $ ID_T9   : chr  "9-204-2043-1" "9-204-2043-35" "9-203-2032-29" "9-203-2032-38" ...
##  $ ID_T10  : chr  "10-204-2042-3" "10-204-2042-41" "10-203-2032-8" "10-203-2032-9" ...
##  $ ID_K1DI2: chr  "K1DI2-103-1031-1" "K1DI2-103-1031-2" "K1DI2-103-1031-3" "K1DI2-103-1031-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T9 = col_character(),
##   ..   ID_T10 = col_character(),
##   ..   ID_K1DI2 = col_character()
##   .. )
str(Bestandteile_Komponente_K1DI2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of  6 variables:
##  $ X1      : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_T1   : chr  "1-204-2044-183" "1-201-2011-246" "1-201-2011-152" "1-201-2011-134" ...
##  $ ID_T2   : chr  "2-202-2022-551" "2-202-2022-738" "2-201-2011-181" "2-202-2022-561" ...
##  $ ID_T9   : chr  "9-204-2043-1" "9-204-2043-35" "9-203-2032-29" "9-203-2032-38" ...
##  $ ID_T10  : chr  "10-204-2042-3" "10-204-2042-41" "10-203-2032-8" "10-203-2032-9" ...
##  $ ID_K1DI2: chr  "K1DI2-103-1031-1" "K1DI2-103-1031-2" "K1DI2-103-1031-3" "K1DI2-103-1031-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_T1 = col_character(),
##   ..   ID_T2 = col_character(),
##   ..   ID_T9 = col_character(),
##   ..   ID_T10 = col_character(),
##   ..   ID_K1DI2 = col_character()
##   .. )
anyNA(Bestandteile_Komponente_K1DI2_roh)
## [1] FALSE
Motorbestandteil_Aufbereitung<-function(dat){
  
  
  # die Muster "ID_T" kann alle Spaltenname ,die  Einzeilteilen relevanten sind, kriegen
  # z.B: 
  #     "ID_T1","ID_T2","ID_T3","ID_T4","ID_T5","ID_T6","ID_T7","ID_T8","ID_T9","ID_T10",
  #
  Id_Teile_Names_Index<- str_which(colnames(dat),regex("ID_T"))
  Id_Teile_Names<-colnames(dat)[Id_Teile_Names_Index]
  
  # die Muster "ID_K" kann alle Spaltenname ,die  Motor relevanten sind, kriegen
  # z.B: 
  #     "ID_K1DI1","ID_K1DI2","ID_K1BE1","ID_K1BE2"
  #
  Id_Motor_Name_Index<- str_which(colnames(dat),regex("ID_K"))
  Id_Moto_Name<-colnames(dat)[Id_Motor_Name_Index]
  
  
  Motor_Typ_geben <- function(ID_Motor) {
    if(stringr::str_detect(ID_Motor,regex("DI"))){
      return(as.factor("Dieselmotor"))
      
    }else if(stringr::str_detect(ID_Motor,regex("BE"))){
      return(as.factor("Benzinmotor"))
      
    }else{
      return(as.factor("unbekannt"))
    }
    
  }
  
  dat<-dat%>%
  #Auswahl relevanter Spalten
    dplyr::select(c(Id_Teile_Names,Id_Moto_Name))%>%
  #Umbennen auf "ID_Motor"
  #betroffend sind Spalten:
  #     "ID_K1DI1","ID_K1DI2","ID_K1BE1","ID_K1BE2"
    dplyr::rename(ID_Motor=eply::unquote(Id_Moto_Name))%>%
  #neue Spalten hinzufügen
  #Spaltenname (neue):
  #     "Motor_Typ":
  #                 Mögliche Werte sind "Benzinmotor","Dieselmotor" oder "unbekannt"
    dplyr::mutate(Motor_Typ=Motor_Typ_geben(ID_Motor))%>%
  #alle Spalten, die mit IDNummer von Einzelteile soll in eine Spalten integriert werden
  #Spaltenname (neue)
  #     "ID_Teil":
  #                 Mögliche werte sind "x-xxx-xxx-xxxx",x sind Ziffer
  #     "Teil_Typ":
  #                 Mögliche werte sind "ID_Tx",x sind Ziffer
    tidyr::gather(Id_Teile_Names,key="Teil_Typ",value="ID_Teil")%>%
  #Auswahl von nur zwei Spalten von ID
    dplyr::select("ID_Motor","ID_Teil")
    
  
}

Abbildung_Teil_zu_Motor_K1BE1<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1BE1_roh)
Abbildung_Teil_zu_Motor_K1BE2<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1BE2_roh)
Abbildung_Teil_zu_Motor_K1DI1<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1DI1_roh)
Abbildung_Teil_zu_Motor_K1DI2<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1DI2_roh)


#remove unuseable variable
rm(
  Bestandteile_Komponente_K1BE1_roh,
  Bestandteile_Komponente_K1BE2_roh,
  Bestandteile_Komponente_K1DI1_roh,
  Bestandteile_Komponente_K1DI2_roh
)

2.4 Datenaufbereitung der Fahrzeug

Die Tabellen aller Motoren weisen auch zwei unterschiedliche merkmale auf:

  • Merkmal1: ordentliche Struktur.Die Nachbearbeitung bezieht sich vorwiegend auf Auswahl relevante Spalten und Datentypumwandlung

Betroffende sind Fahrzeug: Typ11 und Typ12

  • Merkmal2: kein duplizierte Spalten,aber Produktionsdatum sind als eine Ganzzahl angegeben, die eigentlich den Zeitabstand zu Originsdatum Origin bedeutet

Betroffende sind Fahrzeug: Typ21 und Typ22

Deswegung bei Aufbereitung Fahrzeugdaten brauchen wir nur eine zusätzlichen Funktion für ordentliche Struktur

str(Fahrzeuge_OEM1_Typ11_roh)
## Classes 'data.table' and 'data.frame':   1977164 obs. of  9 variables:
##  $ V1                     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Fahrzeug            : chr  "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
##  $ Produktionsdatum       : chr  "2008-11-18" "2008-11-18" "2008-11-19" "2008-11-19" ...
##  $ Herstellernummer       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Werksnummer            : int  11 11 11 11 11 11 11 11 11 11 ...
##  $ Fehlerhaft             : int  0 0 0 0 0 0 0 0 1 0 ...
##  $ Fehlerhaft_Datum       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung: int  0 0 0 0 0 0 0 0 44951 0 ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM1_Typ11_roh)
##        V1                X1          ID_Fahrzeug        Produktionsdatum  
##  Min.   :      1   Min.   :      1   Length:1977164     Length:1977164    
##  1st Qu.: 494292   1st Qu.: 494292   Class :character   Class :character  
##  Median : 988583   Median : 988583   Mode  :character   Mode  :character  
##  Mean   : 988583   Mean   : 988583                                        
##  3rd Qu.:1482873   3rd Qu.:1482873                                        
##  Max.   :1977164   Max.   :1977164                                        
##  Herstellernummer  Werksnummer     Fehlerhaft     Fehlerhaft_Datum  
##  Min.   :1        Min.   :11.0   Min.   :0.0000   Length:1977164    
##  1st Qu.:1        1st Qu.:11.0   1st Qu.:0.0000   Class :character  
##  Median :1        Median :11.0   Median :0.0000   Mode  :character  
##  Mean   :1        Mean   :11.4   Mean   :0.1002                     
##  3rd Qu.:1        3rd Qu.:12.0   3rd Qu.:0.0000                     
##  Max.   :1        Max.   :12.0   Max.   :1.0000                     
##  Fehlerhaft_Fahrleistung
##  Min.   :    0          
##  1st Qu.:    0          
##  Median :    0          
##  Mean   : 4227          
##  3rd Qu.:    0          
##  Max.   :47818
str(Fahrzeuge_OEM1_Typ12_roh)
## Classes 'data.table' and 'data.frame':   408096 obs. of  9 variables:
##  $ V1                     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Fahrzeug            : chr  "12-1-12-1" "12-1-12-2" "12-1-12-3" "12-1-12-4" ...
##  $ Produktionsdatum       : chr  "2008-11-19" "2008-11-19" "2008-11-19" "2008-11-19" ...
##  $ Herstellernummer       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Werksnummer            : int  12 12 12 12 12 12 12 12 12 12 ...
##  $ Fehlerhaft             : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum       : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung: int  0 0 0 0 0 0 0 0 0 0 ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM1_Typ12_roh)
##        V1               X1         ID_Fahrzeug        Produktionsdatum  
##  Min.   :     1   Min.   :     1   Length:408096      Length:408096     
##  1st Qu.:102025   1st Qu.:102025   Class :character   Class :character  
##  Median :204049   Median :204049   Mode  :character   Mode  :character  
##  Mean   :204049   Mean   :204049                                        
##  3rd Qu.:306072   3rd Qu.:306072                                        
##  Max.   :408096   Max.   :408096                                        
##  Herstellernummer  Werksnummer   Fehlerhaft     Fehlerhaft_Datum  
##  Min.   :1        Min.   :12   Min.   :0.0000   Length:408096     
##  1st Qu.:1        1st Qu.:12   1st Qu.:0.0000   Class :character  
##  Median :1        Median :12   Median :0.0000   Mode  :character  
##  Mean   :1        Mean   :12   Mean   :0.1004                     
##  3rd Qu.:1        3rd Qu.:12   3rd Qu.:0.0000                     
##  Max.   :1        Max.   :12   Max.   :1.0000                     
##  Fehlerhaft_Fahrleistung
##  Min.   :    0          
##  1st Qu.:    0          
##  Median :    0          
##  Mean   : 4573          
##  3rd Qu.:    0          
##  Max.   :50491
str(Fahrzeuge_OEM2_Typ21_roh)
## Classes 'data.table' and 'data.frame':   512354 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Fahrzeug                     : chr  "21-2-21-1" "21-2-21-2" "21-2-21-3" "21-2-21-4" ...
##  $ Herstellernummer                : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ Werksnummer                     : int  21 21 21 21 21 21 21 21 21 21 ...
##  $ Fehlerhaft                      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  NA NA NA NA ...
##  $ Fehlerhaft_Fahrleistung         : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ Produktionsdatum_Origin_01011970: int  14202 14202 15353 14203 14203 14203 14203 14203 14203 14204 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM2_Typ21_roh)
##        V1               X1         ID_Fahrzeug        Herstellernummer
##  Min.   :     1   Min.   :     1   Length:512354      Min.   :2       
##  1st Qu.:128089   1st Qu.:128089   Class :character   1st Qu.:2       
##  Median :256178   Median :256178   Mode  :character   Median :2       
##  Mean   :256178   Mean   :256178                      Mean   :2       
##  3rd Qu.:384266   3rd Qu.:384266                      3rd Qu.:2       
##  Max.   :512354   Max.   :512354                      Max.   :2       
##   Werksnummer   Fehlerhaft      Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :21   Min.   :0.00000   Length:512354      Min.   :     0         
##  1st Qu.:21   1st Qu.:0.00000   Class :character   1st Qu.:     0         
##  Median :21   Median :0.00000   Mode  :character   Median :     0         
##  Mean   :21   Mean   :0.09914                      Mean   :   905         
##  3rd Qu.:21   3rd Qu.:0.00000                      3rd Qu.:     0         
##  Max.   :21   Max.   :1.00000                      Max.   :227523         
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14202                    Length:512354     
##  1st Qu.:14938                    Class :character  
##  Median :15670                    Mode  :character  
##  Mean   :15668                                      
##  3rd Qu.:16397                                      
##  Max.   :17128
str(Fahrzeuge_OEM2_Typ22_roh)
## Classes 'data.table' and 'data.frame':   306490 obs. of  10 variables:
##  $ V1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1                              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Fahrzeug                     : chr  "22-2-21-1" "22-2-21-2" "22-2-21-3" "22-2-21-4" ...
##  $ Herstellernummer                : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ Werksnummer                     : int  21 21 21 21 21 21 21 21 21 21 ...
##  $ Fehlerhaft                      : int  1 1 0 0 0 0 0 0 0 0 ...
##  $ Fehlerhaft_Datum                : chr  "2010-03-18" "2010-03-18" NA NA ...
##  $ Fehlerhaft_Fahrleistung         : int  18841 18841 0 0 0 0 0 0 0 0 ...
##  $ Produktionsdatum_Origin_01011970: int  14202 14202 14202 14203 14203 14203 14204 14204 14204 14204 ...
##  $ origin                          : chr  "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM2_Typ22_roh)
##        V1               X1         ID_Fahrzeug        Herstellernummer
##  Min.   :     1   Min.   :     1   Length:306490      Min.   :2       
##  1st Qu.: 76623   1st Qu.: 76623   Class :character   1st Qu.:2       
##  Median :153246   Median :153246   Mode  :character   Median :2       
##  Mean   :153246   Mean   :153246                      Mean   :2       
##  3rd Qu.:229868   3rd Qu.:229868                      3rd Qu.:2       
##  Max.   :306490   Max.   :306490                      Max.   :2       
##   Werksnummer     Fehlerhaft      Fehlerhaft_Datum   Fehlerhaft_Fahrleistung
##  Min.   :21.0   Min.   :0.00000   Length:306490      Min.   :     0         
##  1st Qu.:22.0   1st Qu.:0.00000   Class :character   1st Qu.:     0         
##  Median :22.0   Median :0.00000   Mode  :character   Median :     0         
##  Mean   :21.8   Mean   :0.09872                      Mean   :  1776         
##  3rd Qu.:22.0   3rd Qu.:0.00000                      3rd Qu.:     0         
##  Max.   :22.0   Max.   :1.00000                      Max.   :137158         
##  Produktionsdatum_Origin_01011970    origin         
##  Min.   :14202                    Length:306490     
##  1st Qu.:14946                    Class :character  
##  Median :15670                    Mode  :character  
##  Mean   :15670                                      
##  3rd Qu.:16397                                      
##  Max.   :17129
Tabelle_mit_ordentlicher_Struktur_Aufbereiten<-function(dat){
  
  Id_Name_Index<- str_which(colnames(dat),regex("ID"))
  Id_Name<-colnames(dat)[Id_Name_Index]
  
  Produktionsdatum_Name_Index<- str_which(colnames(dat),regex("Pro"))
  Produktionsdatum_Name<-colnames(dat)[Produktionsdatum_Name_Index]
  
  
  Fehlerhaft_Name_Index<- str_which(colnames(dat),regex("t\\b"))
  Fehlerhaft_Name<-colnames(dat)[Fehlerhaft_Name_Index]
  
  Fehlerhaft_Datum_Name_Index<- str_which(colnames(dat),regex("t_D"))
  Fehlerhaft_Datum_Name<-colnames(dat)[Fehlerhaft_Datum_Name_Index]
  
  
  #zu erst wurde nur relevante Spakten gewählt
   Relevant_Names<-c(Id_Name,
                    Produktionsdatum_Name,
                    Fehlerhaft_Name,
                    Fehlerhaft_Datum_Name)
  dat<-dat%>%
    dplyr::select(Relevant_Names)%>%
  #Umbenennen
    dplyr::rename(IDNummer=eply::unquote(Id_Name)) %>%
    dplyr::rename(Produktionsdatum=eply::unquote(Produktionsdatum_Name)) %>%
    dplyr::rename(Fehlerhaft=eply::unquote(Fehlerhaft_Name)) %>%
    dplyr::rename(Fehlerhaft_Datum=eply::unquote(Fehlerhaft_Datum_Name)) %>%
  #Umwandeln der Datentyp
    dplyr::mutate(Fehlerhaft_Datum=lubridate::as_date(Fehlerhaft_Datum))%>%
    dplyr::mutate(Fehlerhaft=base::as.logical(Fehlerhaft))%>%
    dplyr::mutate(Produktionsdatum=lubridate::as_date(Produktionsdatum))
}


Fahrzeuge_OEM1_Typ11<-Tabelle_mit_ordentlicher_Struktur_Aufbereiten(Fahrzeuge_OEM1_Typ11_roh)
Fahrzeuge_OEM1_Typ12<-Tabelle_mit_ordentlicher_Struktur_Aufbereiten(Fahrzeuge_OEM1_Typ12_roh)
Fahrzeuge_OEM2_Typ21<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Fahrzeuge_OEM2_Typ21_roh)
Fahrzeuge_OEM2_Typ22<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Fahrzeuge_OEM2_Typ22_roh)



rm(Fahrzeuge_OEM1_Typ11_roh,
   Fahrzeuge_OEM1_Typ12_roh,
   Fahrzeuge_OEM2_Typ21_roh,
   Fahrzeuge_OEM2_Typ22_roh)

2.5 Datenaufbereitung der Fahrzeugbestandteile

In der Aufgabenstellung steht folgende Angabe:

Angabe 1 >Ein Fahrzeug gilt immer dann als ausgefallen, wenn ein verbautes Einzelteil, eine verbaute Komponente oder das gesamte Fahrzeug als fehlerhaft markiert ist. Diese Logik gilt entsprechend auch für Komponenten, die fehlerhafte Einzelteile enthalten.

Das heißt ,die Fehlerfolge Fahrzeug_ausgefallen stammt aus fünf Quellen(siehe Bild unten) :

  1. gesamte Fahrzeug Fehlerhaft markiert

  2. Motor Kyy ausgefallen

  3. Sitz ausgefallen

  4. Karosserie ausgefallen

  5. Schaltung ausgefallen

Qulle 1 ist auf Fahrzeugebene, die Fehlerinformation der Fahrzeug ist nach Fahrzeugtype separate in 4 Tabelle protokolliert.

Quell 2 bis 5 sind 4 Zweige auf Komponentenebene.Jeder Fahrzeug besteht aus Komponenten.Aber nur Fehler von 4 Komponente sind in Datenbank protokolliert, nämlich Motor,Sitze ,Karosserie,Schaltung. theoretische sollen Unterebene(Teilebene) von aller Komponenten betrachtet werden. Aber das Management des Konzerns hat folgende Strategie:

Momentan versuchen die Automobilhersteller, trotz negativer Berichterstattung über Dieselfahrzeuge, Kunden für Autos mit Dieselmotoren zu gewinnen. Ein oft verwendetes Argument ist die Langlebigkeit von Dieselmotoren, die deutlich größer als die Lebensdauer der Benzinmotoren sein soll. Das Management beauftragt Sie, diese Behauptung zu überprüfen um mit der Aussage künftig werben zu können. Überprüfen Sie die Aussage über die Langlebigkeit von Dieselmotoren durch einen Vergleich mit Benzinmotoren.

Deswegen wollen wir nicht,dass sich die Ergebnis der Fehleranalyse durch Fehlerursachen von anderen Komponenten stören lässt. Die Umfang von Analyse wird so eingegrenzt: Wir betrachten markierte Fehler auf Fahrzeugen, markierte Fehler auf Motoren und markierte Fehler auf Teil,die in Motor verbaut wurden.

Motor Kyy repräsentiert Motor K1BE1,K1BE2,K1DI1,K1DI2

Teil xx repräsentiert z.B Teil T_01,T_02bis zu T10

# Wir kümmern uns nur um die Abbildung von Motor zu Fahrzeug

str(Bestandteile_Fahrzeuge_OEM1_Typ11_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1977164 obs. of  6 variables:
##  $ X1           : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Karosserie: chr  "K4-112-1121-3" "K4-112-1121-4" "K4-112-1121-7" "K4-112-1121-9" ...
##  $ ID_Schaltung : chr  "K3SG1-105-1051-32" "K3SG1-105-1051-141" "K3SG1-105-1051-106" "K3SG1-105-1051-21" ...
##  $ ID_Sitze     : chr  "K2LE1-109-1091-2" "K2ST1-109-1092-5" "K2ST1-109-1092-57" "K2ST1-109-1092-91" ...
##  $ ID_Motor     : chr  "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-38" "K1BE1-101-1011-97" ...
##  $ ID_Fahrzeug  : chr  "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_Karosserie = col_character(),
##   ..   ID_Schaltung = col_character(),
##   ..   ID_Sitze = col_character(),
##   ..   ID_Motor = col_character(),
##   ..   ID_Fahrzeug = col_character()
##   .. )
summary(Bestandteile_Fahrzeuge_OEM1_Typ11_roh)
##        X1          ID_Karosserie      ID_Schaltung         ID_Sitze        
##  Min.   :      1   Length:1977164     Length:1977164     Length:1977164    
##  1st Qu.: 494292   Class :character   Class :character   Class :character  
##  Median : 988583   Mode  :character   Mode  :character   Mode  :character  
##  Mean   : 988583                                                           
##  3rd Qu.:1482873                                                           
##  Max.   :1977164                                                           
##    ID_Motor         ID_Fahrzeug       
##  Length:1977164     Length:1977164    
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
str(Bestandteile_Fahrzeuge_OEM1_Typ12_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 408096 obs. of  6 variables:
##  $ X1           : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Karosserie: chr  "K5-112-1122-1" "K5-112-1122-11" "K5-112-1122-2" "K5-112-1122-3" ...
##  $ ID_Schaltung : chr  "K3SG1-105-1051-4" "K3AG1-105-1051-9" "K3AG1-105-1051-23" "K3AG1-106-1061-66" ...
##  $ ID_Sitze     : chr  "K2ST1-109-1092-1" "K2ST1-109-1092-16" "K2ST1-109-1092-21" "K2ST1-109-1092-70" ...
##  $ ID_Motor     : chr  "K1BE1-101-1011-90" "K1BE1-101-1011-2" "K1BE1-101-1011-8" "K1BE1-101-1011-11" ...
##  $ ID_Fahrzeug  : chr  "12-1-12-1" "12-1-12-2" "12-1-12-3" "12-1-12-4" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_Karosserie = col_character(),
##   ..   ID_Schaltung = col_character(),
##   ..   ID_Sitze = col_character(),
##   ..   ID_Motor = col_character(),
##   ..   ID_Fahrzeug = col_character()
##   .. )
summary(Bestandteile_Fahrzeuge_OEM1_Typ12_roh)
##        X1         ID_Karosserie      ID_Schaltung         ID_Sitze        
##  Min.   :     1   Length:408096      Length:408096      Length:408096     
##  1st Qu.:102025   Class :character   Class :character   Class :character  
##  Median :204049   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :204049                                                           
##  3rd Qu.:306072                                                           
##  Max.   :408096                                                           
##    ID_Motor         ID_Fahrzeug       
##  Length:408096      Length:408096     
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
str(Bestandteile_Fahrzeuge_OEM2_Typ21_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 512354 obs. of  6 variables:
##  $ X1           : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Karosserie: chr  "K6-113-1132-1" "K6-113-1132-2" "K6-113-1132-8" "K6-113-1132-9" ...
##  $ ID_Schaltung : chr  "K3AG2-108-1082-10" "K3AG2-108-1082-6" "K3AG2-105-1051-13" "K3AG2-108-1082-16" ...
##  $ ID_Sitze     : chr  "K2ST2-109-1092-44" "K2ST2-109-1092-42" "K2ST2-109-1092-74" "K2ST2-109-1092-31" ...
##  $ ID_Motor     : chr  "K1BE2-101-1011-1" "K1DI2-103-1031-1" "K1BE2-101-1011-4" "K1BE2-101-1011-5" ...
##  $ ID_Fahrzeug  : chr  "21-2-21-1" "21-2-21-2" "21-2-21-4" "21-2-21-5" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   ID_Karosserie = col_character(),
##   ..   ID_Schaltung = col_character(),
##   ..   ID_Sitze = col_character(),
##   ..   ID_Motor = col_character(),
##   ..   ID_Fahrzeug = col_character()
##   .. )
summary(Bestandteile_Fahrzeuge_OEM2_Typ21_roh)
##        X1         ID_Karosserie      ID_Schaltung         ID_Sitze        
##  Min.   :     1   Length:512354      Length:512354      Length:512354     
##  1st Qu.:128089   Class :character   Class :character   Class :character  
##  Median :256178   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :256178                                                           
##  3rd Qu.:384266                                                           
##  Max.   :512354                                                           
##    ID_Motor         ID_Fahrzeug       
##  Length:512354      Length:512354     
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
str(Bestandteile_Fahrzeuge_OEM2_Typ22_roh)
## Classes 'data.table' and 'data.frame':   306490 obs. of  6 variables:
##  $ X1           : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ ID_Karosserie: chr  "K7-114-1142-1" "K7-114-1142-2" "K7-114-1142-5" "K7-114-1142-8" ...
##  $ ID_Schaltung : chr  "K3AG2-108-1082-9" "K3AG2-108-1082-11" "K3AG2-108-1082-14" "K3AG2-108-1082-3" ...
##  $ ID_Sitze     : chr  "K2ST2-109-1092-2" "K2ST2-109-1092-59" "K2ST2-109-1092-4" "K2ST2-109-1092-6" ...
##  $ ID_Motor     : chr  "K1DI2-103-1031-2" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-10" ...
##  $ ID_Fahrzeug  : chr  "22-2-21-1" "22-2-21-2" "22-2-21-3" "22-2-21-4" ...
##  - attr(*, ".internal.selfref")=<externalptr>
summary(Bestandteile_Fahrzeuge_OEM2_Typ22_roh)
##        X1         ID_Karosserie      ID_Schaltung         ID_Sitze        
##  Min.   :     1   Length:306490      Length:306490      Length:306490     
##  1st Qu.: 76623   Class :character   Class :character   Class :character  
##  Median :153246   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :153246                                                           
##  3rd Qu.:229868                                                           
##  Max.   :306490                                                           
##    ID_Motor         ID_Fahrzeug       
##  Length:306490      Length:306490     
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 
Abbildung_Motor_zu_Fahrzeug11<-Bestandteile_Fahrzeuge_OEM1_Typ11_roh%>%
  select("ID_Fahrzeug","ID_Motor")
Abbildung_Motor_zu_Fahrzeug12<-Bestandteile_Fahrzeuge_OEM1_Typ12_roh%>%
  select("ID_Fahrzeug","ID_Motor")
Abbildung_Motor_zu_Fahrzeug21<-Bestandteile_Fahrzeuge_OEM2_Typ21_roh%>%
  select("ID_Fahrzeug","ID_Motor")
Abbildung_Motor_zu_Fahrzeug22<-Bestandteile_Fahrzeuge_OEM2_Typ22_roh%>%
  select("ID_Fahrzeug","ID_Motor")

anyNA(Abbildung_Motor_zu_Fahrzeug11)
## [1] FALSE
anyNA(Abbildung_Motor_zu_Fahrzeug12)
## [1] FALSE
anyNA(Abbildung_Motor_zu_Fahrzeug21)
## [1] FALSE
anyNA(Abbildung_Motor_zu_Fahrzeug22)
## [1] FALSE
rm(Bestandteile_Fahrzeuge_OEM1_Typ11_roh,
   Bestandteile_Fahrzeuge_OEM1_Typ12_roh,
   Bestandteile_Fahrzeuge_OEM2_Typ21_roh,
   Bestandteile_Fahrzeuge_OEM2_Typ22_roh)

2.6 Datenaufbereitung der Zulassung

str(Zulassungen_alle_Fahrzeuge_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of  4 variables:
##  $ X1       : num  408097 408098 1 2 3 ...
##  $ IDNummer : chr  "11-1-11-1" "11-1-11-2" "12-1-12-1" "12-1-12-2" ...
##  $ Gemeinden: chr  "DRESDEN" "DRESDEN" "LEIPZIG" "LEIPZIG" ...
##  $ Zulassung: Date, format: "2009-01-01" "2009-01-01" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   IDNummer = col_character(),
##   ..   Gemeinden = col_character(),
##   ..   Zulassung = col_date(format = "")
##   .. )
Zulassungen_alle_Fahrzeuge<-Zulassungen_alle_Fahrzeuge_roh %>%select("IDNummer","Zulassung")

str(Zulassungen_alle_Fahrzeuge)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of  2 variables:
##  $ IDNummer : chr  "11-1-11-1" "11-1-11-2" "12-1-12-1" "12-1-12-2" ...
##  $ Zulassung: Date, format: "2009-01-01" "2009-01-01" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   X1 = col_double(),
##   ..   IDNummer = col_character(),
##   ..   Gemeinden = col_character(),
##   ..   Zulassung = col_date(format = "")
##   .. )
rm(Zulassungen_alle_Fahrzeuge_roh)

3 Datentransformation

Das Ziel der Datentransformation ist, finalen Datensatz zu erstellen.

Und die Anforderung ist in Aufgabenstellung so angegeben:

Ermitteln Sie den Zeitraum zwischen Zulassungsdatum und Fehlerdatum aller Fahrzeuge, getrennt nach Motorisierungsart und Fahrzeugart. Visualisieren Sie Ihre Ergebnisse entsprechend Ihrer Zielgruppe. Ermöglichen Sie einen Vergleich zwischen den Fahrzeugtypen.

3.1 Vorbereitung erfolderlicher Tabelle

# die  Tabelle von Fahrzeugen Zusammensetzen
      Fahrzeug_alle<-bind_rows(list(
        Fahrzeuge_OEM1_Typ11,
        Fahrzeuge_OEM1_Typ12,
        Fahrzeuge_OEM2_Typ21,
        Fahrzeuge_OEM2_Typ22
      ))

dim(Fahrzeug_alle)
## [1] 3204104       4
# die  Tabelle von Produktionsdatum aller Fahrzeugen auswählen
        Fahrzeug_Produktionsdatum<-Fahrzeug_alle%>%
          dplyr::select("IDNummer","Produktionsdatum")%>%
          dplyr::rename(ID_Fahrzeug=IDNummer)

        
dim(Zulassungen_alle_Fahrzeuge)
## [1] 3204104       2
# die  Tabelle von Motoren Zusammensetzen
      Motor_alle<-bind_rows(list(
        Komponente_K1BE1,
        Komponente_K1BE2,
        Komponente_K1DI1,
        Komponente_K1DI2
      ))
dim(Motor_alle)
## [1] 3204104       4
# die  Tabelle von Einzelteil Zusammensetzen
      Einzelteil_alle<-bind_rows(list(
        Einzelteil_T01,
        Einzelteil_T02,
        Einzelteil_T03,
        Einzelteil_T04,
        Einzelteil_T05,
        Einzelteil_T06,
        Einzelteil_T07,
        Einzelteil_T08,
        Einzelteil_T09,
        Einzelteil_T10
      ))
dim(Einzelteil_alle)
## [1] 12816416        4
# die  Tabelle von Abbildung_Teil_zu_Motor Zusammensetzen
# Abbildung:
#           "ID_Teil"->"ID_Motor"
      Abbildung_Teil_zu_Motor_alle<-bind_rows(list(
        Abbildung_Teil_zu_Motor_K1BE1,
        Abbildung_Teil_zu_Motor_K1BE2,
        Abbildung_Teil_zu_Motor_K1DI1,
        Abbildung_Teil_zu_Motor_K1DI2
      ))
dim(Abbildung_Teil_zu_Motor_alle)
## [1] 12816416        2
# die  Tabelle von Abbildung_Motor_Fahrzeug Zusammensetzen
# Abbildung:
#           "ID_Motor"->"ID_Fahrzeug"
      Abbildung_Motor_zu_Fahrzeug_alle<-bind_rows(list(
        Abbildung_Motor_zu_Fahrzeug11,
        Abbildung_Motor_zu_Fahrzeug12,
        Abbildung_Motor_zu_Fahrzeug21,
        Abbildung_Motor_zu_Fahrzeug22
      ))
dim(Abbildung_Motor_zu_Fahrzeug_alle)
## [1] 3204104       2
#remove unuseable variables

rm(
        Fahrzeuge_OEM1_Typ11,
        Fahrzeuge_OEM1_Typ12,
        Fahrzeuge_OEM2_Typ21,
        Fahrzeuge_OEM2_Typ22, 
        Komponente_K1BE1,
        Komponente_K1BE2,
        Komponente_K1DI1,
        Komponente_K1DI2,
        Einzelteil_T01,
        Einzelteil_T02,
        Einzelteil_T03,
        Einzelteil_T04,
        Einzelteil_T05,
        Einzelteil_T06,
        Einzelteil_T07,
        Einzelteil_T08,
        Einzelteil_T09,
        Einzelteil_T10,
        Abbildung_Teil_zu_Motor_K1BE1,
        Abbildung_Teil_zu_Motor_K1BE2,
        Abbildung_Teil_zu_Motor_K1DI1,
        Abbildung_Teil_zu_Motor_K1DI2,
        Abbildung_Motor_zu_Fahrzeug11,
        Abbildung_Motor_zu_Fahrzeug12,
        Abbildung_Motor_zu_Fahrzeug21,
        Abbildung_Motor_zu_Fahrzeug22
)

3.2 Fehlerquelle aus Einzelteilen , Motoren und Fahrzeug selbst

Auswirkung aus Einzelteilen

anyNA(Einzelteil_alle$Fehlerhaft)
## [1] FALSE
Auswirkung_Teil_auf_Motor<-Einzelteil_alle%>%
  dplyr::rename(ID_Teil = IDNummer)%>%
  dplyr::inner_join(Abbildung_Teil_zu_Motor_alle,by="ID_Teil")%>%
  dplyr::group_by(ID_Motor)%>%
  dplyr::summarise(Fehlerhaft_aus_Teilen=any(Fehlerhaft),
                   Fehlerhaft_Datum_aus_Teilen=lubridate::as_date(min(Fehlerhaft_Datum,na.rm = TRUE)))



str(Auswirkung_Teil_auf_Motor)
## Classes 'tbl_df', 'tbl' and 'data.frame':    3204104 obs. of  3 variables:
##  $ ID_Motor                   : chr  "K1BE1-101-1011-1" "K1BE1-101-1011-10" "K1BE1-101-1011-100" "K1BE1-101-1011-1000" ...
##  $ Fehlerhaft_aus_Teilen      : logi  TRUE FALSE TRUE FALSE FALSE FALSE ...
##  $ Fehlerhaft_Datum_aus_Teilen: Date, format: "2009-09-30" NA ...
#rm(Auswirkung_Teil_auf_Motor)

Auswirkung aus Motoren

anyNA(Motor_alle$Fehlerhaft)
## [1] FALSE
Auswirkung_Motor_auf_Fahrzeug<-Motor_alle%>%
  dplyr::rename(ID_Motor = IDNummer)%>%
  dplyr::inner_join(Abbildung_Motor_zu_Fahrzeug_alle,by="ID_Motor")%>%
  dplyr::select(Fehlerhaft,
                Fehlerhaft_Datum,
                ID_Fahrzeug,
                ID_Motor
                )%>%
  dplyr::rename(Fehlerhaft_aus_Motor=Fehlerhaft,
                Fehlerhaft_Datum_aus_Motor=Fehlerhaft_Datum)



str(Auswirkung_Motor_auf_Fahrzeug)
## 'data.frame':    3204104 obs. of  4 variables:
##  $ Fehlerhaft_aus_Motor      : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
##  $ Fehlerhaft_Datum_aus_Motor: Date, format: NA NA ...
##  $ ID_Fahrzeug               : chr  "11-1-11-1" "11-1-11-2" "12-1-12-1" "12-1-12-2" ...
##  $ ID_Motor                  : chr  "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-90" "K1BE1-101-1011-2" ...
#rm(Auswirkung_Motor_auf_Fahrzeug)

Auswirkung aus Fahrzeug selbst

anyNA(Fahrzeug_alle$Fehlerhaft)
## [1] FALSE
Fahrzeug_alle_selbst<-Fahrzeug_alle%>%
  dplyr::rename(ID_Fahrzeug=IDNummer,
                Fehlerhaft_selbst=Fehlerhaft,
                Fehlerhaft_Datum_selbst=Fehlerhaft_Datum,
                Produktionsdatum_selbst=Produktionsdatum
                )

str(Fahrzeug_alle_selbst)
## 'data.frame':    3204104 obs. of  4 variables:
##  $ ID_Fahrzeug            : chr  "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
##  $ Produktionsdatum_selbst: Date, format: "2008-11-18" "2008-11-18" ...
##  $ Fehlerhaft_selbst      : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
##  $ Fehlerhaft_Datum_selbst: Date, format: NA NA ...

3.3 Ermittlung endgültige Fehlerinformation.

Wenn einer der drei Ebene:

  • Ebene 1: Fahrzeug selbst

  • Ebene 2: Motor

  • Ebene 3: Einzelteil

fehlerhaft markiert, wird dieses Fahrzeug endgültig als Fehlerhaft markiert.

Und die endgültige Fehlerhaft_Datum wählen wir die früheste Datum aus drei Datum aus :

  • Datum1: Fehlerhaft_Datum der Fahrzeug selbst

  • Datum2: Fehlerhaft_Datum der Motor

  • Datum3: Fehlerhaft_Datum der in Motor verbauten Einzelteilen

Fahrzeug_alle_Fehler_aus_drei_Ebene<-Fahrzeug_alle_selbst%>%
  dplyr::inner_join(Auswirkung_Motor_auf_Fahrzeug,by="ID_Fahrzeug")%>%
  dplyr::inner_join(Auswirkung_Teil_auf_Motor,by="ID_Motor")


str(Fahrzeug_alle_Fehler_aus_drei_Ebene)
## 'data.frame':    3204104 obs. of  9 variables:
##  $ ID_Fahrzeug                : chr  "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
##  $ Produktionsdatum_selbst    : Date, format: "2008-11-18" "2008-11-18" ...
##  $ Fehlerhaft_selbst          : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
##  $ Fehlerhaft_Datum_selbst    : Date, format: NA NA ...
##  $ Fehlerhaft_aus_Motor       : logi  FALSE FALSE FALSE FALSE TRUE FALSE ...
##  $ Fehlerhaft_Datum_aus_Motor : Date, format: NA NA ...
##  $ ID_Motor                   : chr  "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-38" "K1BE1-101-1011-97" ...
##  $ Fehlerhaft_aus_Teilen      : logi  TRUE TRUE FALSE TRUE FALSE TRUE ...
##  $ Fehlerhaft_Datum_aus_Teilen: Date, format: "2010-04-09" "2010-06-08" ...
Fahrzeug_Fehler_komplett<-Fahrzeug_alle_Fehler_aus_drei_Ebene%>%
  tidyr::gather(Fehlerhaft_selbst,
         Fehlerhaft_aus_Motor,
         Fehlerhaft_aus_Teilen,
         key = "Ebene",
         value = "Fehlerhaft"
         )%>%
  tidyr::gather(Fehlerhaft_Datum_selbst,
         Fehlerhaft_Datum_aus_Motor,
         Fehlerhaft_Datum_aus_Teilen,
         key = "Datum_Typ",
         value = "Fehlerhaft_Datum")%>%
  dplyr::group_by(ID_Fahrzeug)%>%
  dplyr::summarise(
                   Fehlerhaft=any(Fehlerhaft),
                   Fehlerhaft_Datum=min(Fehlerhaft_Datum,na.rm = TRUE)
                   )
#Die  Ergebnis besitz dieselben Anzahl vom Einträgen  im vergleich zu Zulassungsdatensatz
str(Fahrzeug_Fehler_komplett)
## Classes 'tbl_df', 'tbl' and 'data.frame':    3204104 obs. of  3 variables:
##  $ ID_Fahrzeug     : chr  "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
##  $ Fehlerhaft      : logi  TRUE FALSE FALSE FALSE FALSE TRUE ...
##  $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
#rm(Fahrzeug_alle_Fehler_aus_drei_Ebene)

3.4 Ermittlung der Zeitintervall(Lebensdauer)

Bei Lebensdauerermittlung kümmern wir uns nur um die fehlerhafte Fahrzeuge. Für fehlerfreie Fahrzeuge existieren kein Variable Fehlerhaft_Datum( mit Wert NA)

Fahrzeuge_Lebensdauer<-Fahrzeug_Fehler_komplett%>%
  dplyr::inner_join(Zulassungen_alle_Fahrzeuge,by=c("ID_Fahrzeug"="IDNummer"))%>%
  dplyr::filter(Fehlerhaft==TRUE)%>%
  dplyr::transmute(ID_Fahrzeug=ID_Fahrzeug,
                   Lebensdauer=time_length(interval(Zulassung,Fehlerhaft_Datum),unit = "day"))



anyNA(Fahrzeuge_Lebensdauer$Fehlerhaft)
## [1] FALSE
str(Fahrzeuge_Lebensdauer)
## Classes 'tbl_df', 'tbl' and 'data.frame':    1789120 obs. of  2 variables:
##  $ ID_Fahrzeug: chr  "11-1-11-1" "11-1-11-100000" "11-1-11-1000000" "11-1-11-1000003" ...
##  $ Lebensdauer: num  463 533 444 35 245 422 422 500 37 74 ...
summary(Fahrzeuge_Lebensdauer)
##  ID_Fahrzeug         Lebensdauer    
##  Length:1789120     Min.   : -13.0  
##  Class :character   1st Qu.: 201.0  
##  Mode  :character   Median : 397.0  
##                     Mean   : 315.7  
##                     3rd Qu.: 447.0  
##                     Max.   :3388.0
#rm(Fahrzeuge_Lebensdauer)

3.5 Integration vorhandener Spalten

str(Fahrzeug_Fehler_komplett)
## Classes 'tbl_df', 'tbl' and 'data.frame':    3204104 obs. of  3 variables:
##  $ ID_Fahrzeug     : chr  "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
##  $ Fehlerhaft      : logi  TRUE FALSE FALSE FALSE FALSE TRUE ...
##  $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
str(Fahrzeug_Produktionsdatum)
## 'data.frame':    3204104 obs. of  2 variables:
##  $ ID_Fahrzeug     : chr  "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
##  $ Produktionsdatum: Date, format: "2008-11-18" "2008-11-18" ...
str(Fahrzeuge_Lebensdauer)
## Classes 'tbl_df', 'tbl' and 'data.frame':    1789120 obs. of  2 variables:
##  $ ID_Fahrzeug: chr  "11-1-11-1" "11-1-11-100000" "11-1-11-1000000" "11-1-11-1000003" ...
##  $ Lebensdauer: num  463 533 444 35 245 422 422 500 37 74 ...
str(Abbildung_Motor_zu_Fahrzeug_alle)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of  2 variables:
##  $ ID_Fahrzeug: chr  "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
##  $ ID_Motor   : chr  "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-38" "K1BE1-101-1011-97" ...
Datensatz_Halb_Final<-Fahrzeug_Fehler_komplett%>%
  dplyr::inner_join(Fahrzeug_Produktionsdatum,by="ID_Fahrzeug")%>%
  dplyr::left_join(Fahrzeuge_Lebensdauer,by="ID_Fahrzeug")%>%
  dplyr::left_join(Abbildung_Motor_zu_Fahrzeug_alle,by="ID_Fahrzeug")%>%
  dplyr::left_join(Zulassungen_alle_Fahrzeuge,by=c("ID_Fahrzeug"="IDNummer"))

str(Datensatz_Halb_Final)
## Classes 'tbl_df', 'tbl' and 'data.frame':    3204104 obs. of  7 variables:
##  $ ID_Fahrzeug     : chr  "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
##  $ Fehlerhaft      : logi  TRUE FALSE FALSE FALSE FALSE TRUE ...
##  $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
##  $ Produktionsdatum: Date, format: "2008-11-18" "2008-11-19" ...
##  $ Lebensdauer     : num  463 NA NA NA NA 533 444 NA NA 35 ...
##  $ ID_Motor        : chr  "K1BE1-101-1011-7" "K1BE1-101-1011-50" "K1BE1-104-1041-139" "K1BE1-104-1041-169" ...
##  $ Zulassung       : Date, format: "2009-01-01" "2009-01-01" ...

3.6 Ableitung zusätzlicher Spalten

Dazu brauchen wir noch zusätzliche ableitende Spalten wie Fahrzeug_Typ, `Motor_Typ und Werksnummer der OEM

Motor_Typ<-c("Benzinmotor","Benzinmotor","Dieselmotor","Dieselmotor")
Motor_Benennung<-c("K1BE1","K1BE2","K1DI1","K1DI2")

Abbildung_Typ_Benennung_Motor<-data.table(Motor_Benennung,Motor_Typ)



Datensatz_Final<-Datensatz_Halb_Final%>%
  dplyr::mutate(Fahrzeug_Typ=str_sub(ID_Fahrzeug,1,2))%>%
  dplyr::mutate(Werksnummer_OEM=str_sub(ID_Fahrzeug,6,7))%>%
  dplyr::mutate(Motor_Benennung=str_sub(ID_Motor,1,5))%>%
  dplyr::left_join(Abbildung_Typ_Benennung_Motor,by="Motor_Benennung")

3.7 Nachprüfung der Datensatz

Die Datentyp von Variablen nachprüfen.

# die  Datentype sind  in Ordnung
str(Datensatz_Final)
## Classes 'tbl_df', 'tbl' and 'data.frame':    3204104 obs. of  11 variables:
##  $ ID_Fahrzeug     : chr  "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
##  $ Fehlerhaft      : logi  TRUE FALSE FALSE FALSE FALSE TRUE ...
##  $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
##  $ Produktionsdatum: Date, format: "2008-11-18" "2008-11-19" ...
##  $ Lebensdauer     : num  463 NA NA NA NA 533 444 NA NA 35 ...
##  $ ID_Motor        : chr  "K1BE1-101-1011-7" "K1BE1-101-1011-50" "K1BE1-104-1041-139" "K1BE1-104-1041-169" ...
##  $ Zulassung       : Date, format: "2009-01-01" "2009-01-01" ...
##  $ Fahrzeug_Typ    : chr  "11" "11" "11" "11" ...
##  $ Werksnummer_OEM : chr  "11" "11" "11" "11" ...
##  $ Motor_Benennung : chr  "K1BE1" "K1BE1" "K1BE1" "K1BE1" ...
##  $ Motor_Typ       : chr  "Benzinmotor" "Benzinmotor" "Benzinmotor" "Benzinmotor" ...

Beständigen, ob der Datensatz vollständig ist . und die NA-Wert treten auffällig in zwei Spalten:

  • Fehlerhaft_Datum

  • Lebensdauer

Für NAs in Variable Lebensdauer sieht es gut aus,weil die Anzahl von NA ist identisch wie Anzahl von fehlerfreie Fahrzeuge. Aber es wäre besser , der Variable Lebensdauer Werte zuordnen, die minimale zensierte Dauer (in Tag) bedeutet, nählich zeitliche Differenz zwischen Zulassung und Heute, weil wir so angenommen, dass die Datensätze im Datenbank ist immer aktuell. Wir haben es auch angemerkt, dass Negativ Werte in Variable Lebensdauer existieren.Dieses Problem beruhen auf die Tatsache,dass Fehler aus Motoren oder Einzelteilen schon vor Zulassungsdatum markiert(zensiert) wurden. Wir können die Negative Werte von Lebensdauer einfach auf Null setzen.

Für NAs in Variable Fehlerhaft_Datum sieht es gut aus,weil die Anzahl von NA ist identisch wie Anzahl von fehlerhaften Fahrzeuge.

#es gibt  NA Werte in Datensatz 
anyNA(Datensatz_Final)
## [1] TRUE
summary(Datensatz_Final)
##  ID_Fahrzeug        Fehlerhaft      Fehlerhaft_Datum     Produktionsdatum    
##  Length:3204104     Mode :logical   Min.   :2009-02-28   Min.   :2008-11-18  
##  Class :character   FALSE:1414984   1st Qu.:2013-07-18   1st Qu.:2010-11-24  
##  Mode  :character   TRUE :1789120   Median :2017-02-11   Median :2012-11-23  
##                                     Mean   :NA           Mean   :2012-11-22  
##                                     3rd Qu.:NA           3rd Qu.:2014-11-23  
##                                     Max.   :NA           Max.   :2016-11-30  
##                                                                              
##   Lebensdauer        ID_Motor           Zulassung          Fahrzeug_Typ      
##  Min.   : -13.0    Length:3204104     Min.   :2009-01-01   Length:3204104    
##  1st Qu.: 201.0    Class :character   1st Qu.:2011-02-23   Class :character  
##  Median : 397.0    Mode  :character   Median :2013-02-20   Mode  :character  
##  Mean   : 315.7                       Mean   :2013-02-03                     
##  3rd Qu.: 447.0                       3rd Qu.:2015-02-20                     
##  Max.   :3388.0                       Max.   :2016-12-30                     
##  NA's   :1414984                                                             
##  Werksnummer_OEM    Motor_Benennung     Motor_Typ        
##  Length:3204104     Length:3204104     Length:3204104    
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
## 
table(as.character(Datensatz_Final$Fehlerhaft))
## 
##   FALSE    TRUE 
## 1414984 1789120
#Negative Werte von `Lebensdauer` einfach auf Null setzen.
Datensatz_Final$Lebensdauer[which(Datensatz_Final$Lebensdauer<=0)]<-0

#NA-Wert von `Lebensdauer` mit zensierte Dauer nachfüllen
Datensatz_Final<-Datensatz_Final%>%
  dplyr::mutate(Lebensdauer=if_else(is.na(Lebensdauer),time_length(interval(Zulassung,as_date(now())),unit = "day"),Lebensdauer))

# Datensatz ist bis jetzt entgültig sauber
summary(Datensatz_Final)
##  ID_Fahrzeug        Fehlerhaft      Fehlerhaft_Datum     Produktionsdatum    
##  Length:3204104     Mode :logical   Min.   :2009-02-28   Min.   :2008-11-18  
##  Class :character   FALSE:1414984   1st Qu.:2013-07-18   1st Qu.:2010-11-24  
##  Mode  :character   TRUE :1789120   Median :2017-02-11   Median :2012-11-23  
##                                     Mean   :NA           Mean   :2012-11-22  
##                                     3rd Qu.:NA           3rd Qu.:2014-11-23  
##                                     Max.   :NA           Max.   :2016-11-30  
##   Lebensdauer     ID_Motor           Zulassung          Fahrzeug_Typ      
##  Min.   :   0   Length:3204104     Min.   :2009-01-01   Length:3204104    
##  1st Qu.: 382   Class :character   1st Qu.:2011-02-23   Class :character  
##  Median : 487   Mode  :character   Median :2013-02-20   Mode  :character  
##  Mean   :1316                      Mean   :2013-02-03                     
##  3rd Qu.:2377                      3rd Qu.:2015-02-20                     
##  Max.   :4075                      Max.   :2016-12-30                     
##  Werksnummer_OEM    Motor_Benennung     Motor_Typ        
##  Length:3204104     Length:3204104     Length:3204104    
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
## 

3.8 Exportieren der Datensatz

save(Datensatz_Final,file = "Finaler_Datensatz_08.RData")

4 Auswertung

4.1 Balkendiagramm

Data_Balken<-Datensatz_Final%>%
  dplyr::select(Fehlerhaft,Fahrzeug_Typ,Motor_Typ)%>%
  dplyr::group_by(Fahrzeug_Typ,Motor_Typ)%>%
  dplyr::summarise(n=n(),f_rate=sum(Fehlerhaft==TRUE)/n)%>%
  tidyr::spread(Motor_Typ,f_rate)


p <- plot_ly(Data_Balken, x = ~Fahrzeug_Typ, y = ~Benzinmotor, type = 'bar', name = 'Benzinmotor') %>%
  add_trace(y = ~Dieselmotor, name = 'Dieselmotor') %>%
  layout(yaxis = list(title = 'Fehlerhäufigkeit'), barmode = 'group')

p

Wie in Balkendiagramm gezeigt,dass die Fehlerhäufigkeit von Dieselauto für aller Fahrzeugtyp(11,12,21,22) immer relativ gering als von Benzinauto sind.

4.2 Boxplot

Data_Boxplot<-Datensatz_Final%>%
  dplyr::filter(Fehlerhaft==TRUE)%>%
  dplyr::select(Lebensdauer,Fahrzeug_Typ,Motor_Typ)

fig <- plot_ly(Data_Boxplot, x = ~Fahrzeug_Typ, y = ~Lebensdauer, color = ~Motor_Typ, type = "box")%>%
  layout(boxmode = "group")


fig

We betrachten alle ausgefallene Fahrzeuge in Boxplot. Hier ist der Lebensdauer in y-Achse genau die Zeitinterval zwischen Zulassungsdatum und Fehlerhaft_datum. Fehlerhaft_datum beziehen sich auf die Datum,wann Einzelteilen in Motor, Motor oder Fahrzeug selbst fehlerhalt markiert.Das Datum ist ein frühestes von solchen drei Ebenen.

Bei Fahrzeugtyp 11 und 12 weisen die Verteilungen von Lebensdauer zwischen Benzinauto und Dieselauto kein merklichen Unterschied auf. Aber manche Beizinauto haben schon Mängeln bevor Zulassungsdatum, wegen Fehlerauswirkung aus Motoren und Einzelteilen.

Bei Fahrzeugtyp 21 und 22 sind die Median von Lebensdauer für Dieselmotorbetriebene Fahrzeuge größer die für Benzinmotorbetriebene Fahrzeuge.

General gesagt,Dieselmotor-betriebene Fahrzeuge gewinnt leicht Übermacht über Langlebigkeit nach Boxplot. Diesen Graphik ist nicht intuitiv.

5 Ergebnis

Zum Schluss können wir zusammenfassen, dass Dieselmotor-betriebene Fahrzeuge mit größerer Wahrscheinlichkeit Langlebigkeit in vergleich zu Benzinmotor-betriebene Fahrzeugen